MajorArc Class
PSEUDO
A major arc is a segment of the circumference of a circle having measure greater than or equal to 180 degrees (pi radians). It is defined by a center, one point that defines the radius, and a third point that defines the angle of the arc.
Constructor
MajorArc
-
p1,p2,p3
Parameters:
-
p1,p2,p3
JXG.Point_JXG.Point_JXG.Point. Major arc is an arc of a circle around p1 having measure greater than or equal to 180 degrees (pi radians) and starts at p2. The radius is determined by p2, the angle by p3.
Throws:
If the element cannot be constructed with the given parent objects an exception is thrown.
Example:
// Create an arc out of three free points
var p1 = board.create('point', [2.0, 2.0]);
var p2 = board.create('point', [1.0, 0.5]);
var p3 = board.create('point', [3.5, 1.0]);
var a = board.create('minorarc', [p1, p2, p3]);
Item Index
Methods
- _borderCase
- _insertPoint
- _isOutside
- _isUndefined
- _plotRecursive
- _set
- _triangleDists
- addChild
- addDescendants
- addParents
- addRotation
- addTransform
- allocatePoints
- animate
- bounds
- checkReal
- clearTrace
- cloneToBackground
- countChildren
- createGradient
- createLabel
- dash deprecated
- draggable
- fillColor deprecated
- generatePolynomial
- generateTerm
- getAttribute
- getAttributes
- getLabelAnchor
- getName
- getParents
- getProperty deprecated
- getTextAnchor
- getTpye
- handleSnapToGrid
- hasPoint
- hideElement
- highlight
- highlightFillColor deprecated
- highlightStrokeColor deprecated
- interpolationFunctionFromArray
- isDistOK
- isSegmentDefined
- isSegmentOutside
- labelColor deprecated
- maxX
- minX
- noHighlight
- normalize
- notifyParents
- prepareUpdate
- remove
- removeChild
- removeDescendants
- resolveShortcuts
- setArrow
- setAttribute
- setDash
- setLabel
- setLabelText
- setName
- setParents
- setPosition
- setPositionDirectly
- setProperty deprecated
- shadow deprecated
- showElement
- snapToGrid
- snapToPoints
- strokeColor deprecated
- strokeWidth deprecated
- toJSON
- update
- updateCurve
- updateDataArray
- updateParametricCurve
- updateParametricCurveNaive
- updateParametricCurveOld deprecated
- updateRenderer
- updateTransform
- updateTransformMatrix
- visible deprecated
- Z
Properties
- _org_type
- _pos
- ancestors
- baseElement
- board
- childElements
- descendants
- dump
- elementClass
- elType
- hasLabel
- highlighted
- id
- isDraggable
- isReal
- lastDragTime
- methodMap
- mouseover
- name
- needsUpdate
- notExistingParents
- numberPoints
- numTraces
- parents
- qdt
- quadraticform
- rendNode
- stdform
- subs
- symbolic
- traces
- transformations
- type
- visProp
Methods
_borderCase
-
a
-
b
-
c
-
ta
-
tb
-
tc
-
depth
Investigate a function term at the bounds of intervals where the function is not defined, e.g. log(x) at x = 0.
c is between a and b
Parameters:
-
a
ArrayScreen coordinates of the left interval bound
-
b
ArrayScreen coordinates of the right interval bound
-
c
ArrayScreen coordinates of the bisection point at (ta + tb) / 2
-
ta
NumberParameter which evaluates to a, i.e. [1, X(ta), Y(ta)] = a in screen coordinates
-
tb
NumberParameter which evaluates to b, i.e. [1, X(tb), Y(tb)] = b in screen coordinates
-
tc
Number(ta + tb) / 2 = tc. Parameter which evaluates to b, i.e. [1, X(tc), Y(tc)] = c in screen coordinates
-
depth
NumberActual recursion depth. The recursion stops if depth is equal to 0.
Returns:
true if the point is inserted and the recursion should stop, false otherwise.
_insertPoint
-
pnt
Add a point to the curve plot. If the new point is too close to the previously inserted point, it is skipped. Used in undefined.
Parameters:
-
pnt
JXG.CoordsCoords to add to the list of points
_isOutside
-
a
-
ta
-
b
-
tb
Determines if a segment is outside of the visible canvas (plus a certain border).
Parameters:
Returns:
True if segment is visible.
_isUndefined
-
a
-
ta
-
b
-
tb
Test if the function is undefined on an interval: If the interval borders a and b are undefined, 20 random values are tested if they are undefined, too. Only if all values are undefined, we declare the function to be undefined in this interval.
Parameters:
_plotRecursive
-
a
-
ta
-
b
-
tb
-
depth
-
delta
Recursive interval bisection algorithm for curve plotting. Used in undefined.
Parameters:
-
a
ArrayScreen coordinates of the left interval bound
-
ta
NumberParameter which evaluates to a, i.e. [1, X(ta), Y(ta)] = a in screen coordinates
-
b
ArrayScreen coordinates of the right interval bound
-
tb
NumberParameter which evaluates to b, i.e. [1, X(tb), Y(tb)] = b in screen coordinates
-
depth
NumberActual recursion depth. The recursion stops if depth is equal to 0.
-
delta
NumberIf the distance of the bisection point at (ta + tb) / 2 from the point (a + b) / 2 is less then delta, the segment [a,b] is regarded as straight line.
Returns:
Reference to the curve object.
_set
-
property
-
value
Sets the value of property property to value.
_triangleDists
-
a
-
b
-
c
Compute distances in screen coordinates between the points ab, ac, cb, and cd, where d = (a + b)/2. cd is used for the smoothness test, ab, ac, cb are used to detect jumps, cusps and poles.
Parameters:
Returns:
array of distances in screen coordinates between: ab, ac, cb, and cd.
addChild
-
obj
Add an element as a child to the current element. Can be used to model dependencies between geometry elements.
Parameters:
-
obj
JXG.GeometryElementThe dependent object.
addDescendants
-
obj
Adds the given object to the descendants list of this object and all its child objects.
Parameters:
-
obj
JXG.GeometryElementThe element that is to be added to the descendants list.
addParents
-
parents
Adds ids of elements to the array this.parents. This method needs to be called if some dependencies can not be detected automatically by JSXGraph. For example if a function graph is given by a function which referes to coordinates of a point, calling addParents() is necessary.
Parameters:
-
parents
ArrayArray of elements or ids of elements. Alternatively, one can give a list of objects as parameters.
Returns:
reference to the object itself.
Example:
// Movable function graph
var A = board.create('point', [1, 0], {name:'A'}),
B = board.create('point', [3, 1], {name:'B'}),
f = board.create('functiongraph', function(x) {
var ax = A.X(),
ay = A.Y(),
bx = B.X(),
by = B.Y(),
a = (by - ay) / ( (bx - ax) * (bx - ax) );
return a * (x - ax) * (x - ax) + ay;
}, {fixed: false});
f.addParents([A, B]);
addRotation
-
angle
Rotate texts or images by a given degree. Works only for texts where JXG.Text#display equal to "internal".
Parameters:
-
angle
NumberThe degree of the rotation (90 means vertical text).
See also:
- JXG.GeometryElement#rotate
addTransform
-
transform
Add transformations to this curve.
Parameters:
-
transform
JXG.Transformation | ArrayEither one {@link JXG.Transformation} or an array of {@link JXG.Transformation}s.
Returns:
Reference to the curve object.
allocatePoints
()
private
chainable
Allocate points in the Coords array this.points
animate
-
hash
-
time
-
[options]
Animates properties for that object like stroke or fill color, opacity and maybe even more later.
Parameters:
Returns:
A reference to the object
bounds
()
Array
Dimensions of the smallest rectangle enclosing the element.
Returns:
The coordinates of the enclosing rectangle in a format like the bounding box in {@link JXG.Board#setBoundingBox}.
checkReal
()
JXG.Curve
private
chainable
Check if at least one point on the curve is finite and real and
sets the property isReal
.
Returns:
Reference to the curve object.
clearTrace
()
chainable
Removes all objects generated by the trace function.
cloneToBackground
()
chainable
Copy the element to background. This is used for tracing elements.
countChildren
()
Number
private
Counts the direct children of an object without counting labels.
Returns:
Number of children
createGradient
()
private
chainable
Creates a gradient nodes in the renderer.
See also:
- JXG.SVGRenderer#setGradient
createLabel
()
chainable
Creates a label element for this geometry element.
See also:
- #addLabelToElement
dash
-
d
Set the dash type of an element
Parameters:
-
d
NumberInteger which determines the way of dashing an element's outline.
See also:
draggable
()
Boolean
private
Decides whether an element can be dragged. This is used in JXG.GeometryElement#setPositionDirectly methods where all parent elements are checked if they may be dragged, too.
Returns:
fillColor
-
fColor
Set the fillColor of an element
Parameters:
-
fColor
StringString which determines the fill color of an object.
See also:
generatePolynomial
()
Array
Array of strings containing the polynomials defining the element. Used for determining geometric loci the groebner way.
Returns:
An array containing polynomials describing the locus of the current object.
generateTerm
-
varname
-
xterm
-
yterm
-
mi
-
ma
Converts the GEONExT syntax of the defining function term into JavaScript. New methods X() and Y() for the Curve object are generated, further new methods for minX() and maxX().
Parameters:
Returns:
Reference to the curve object.
See also:
- JXG.Curve#JXG.GeonextParser.geonext2JS.
getAttribute
-
key
Get the value of the property key.
Parameters:
-
key
StringThe name of the property you are looking for
Returns:
The value of the property
getLabelAnchor
()
JXG.Coords
Returns the coords object where the label of the element shall be drawn. Differs in some cases from the values that getTextAnchor returns.
Returns:
JXG.Coords Place where the text shall be drawn.
See also:
getParents
()
Array
List of the element ids resp. values used as parents in JXG.Board#create.
Returns:
getTextAnchor
()
JXG.Coords
Returns the coords object where a text that is bound to the element shall be drawn. Differs in some cases from the values that getLabelAnchor returns.
Returns:
JXG.Coords Place where the text shall be drawn.
See also:
handleSnapToGrid
-
force
Move an element to its nearest grid point. The function uses the coords object of the element as its actual position. If there is no coords object, nothing is done.
Parameters:
-
force
Booleanforce snapping independent from what the snaptogrid attribute says
Returns:
Reference to this element
hasPoint
-
x
-
y
-
start
Checks whether (x,y) is near the curve.
Parameters:
Returns:
True if (x,y) is near the curve, False otherwise.
hideElement
()
chainable
Hide the element. It will still exist but not visible on the board.
highlight
-
[force=false]
Highlights the element.
Parameters:
-
[force=false]
Boolean optionalForce the highlighting
highlightFillColor
-
fColor
Set the highlightFillColor of an element
Parameters:
-
fColor
StringString which determines the fill color of an object when its highlighted.
See also:
highlightStrokeColor
-
sColor
Set the highlightStrokeColor of an element
Parameters:
-
sColor
StringString which determines the stroke color of an object when its highlighted.
See also:
interpolationFunctionFromArray
-
which
Generate the method curve.X() in case curve.dataX is an array and generate the method curve.Y() in case curve.dataY is an array.
Parameters:
-
which
StringEither 'X' or 'Y'
Returns:
isDistOK
-
dx
-
dy
-
MAXX
-
MAXY
Compares the absolute value of dx with MAXX and the absolute value of dy with MAXY.
Returns:
true, if |dx| < MAXX and |dy| < MAXY.
isSegmentDefined
()
private
isSegmentOutside
-
x0
-
y0
-
x1
-
y1
Crude and cheap test if the segment defined by the two points (x0, y0) and (x1, y1) is outside the viewport of the board. All parameters have to be given in screen coordinates.
Returns:
true if the given segment is outside the visible area.
labelColor
-
lColor
Set the labelColor of an element
Parameters:
-
lColor
StringString which determines the text color of an object's label.
See also:
maxX
()
Number
Gives the default value of the right bound for the curve. May be overwritten in JXG.Curve#generateTerm.
Returns:
Right bound for the curve.
minX
()
Number
Gives the default value of the left bound for the curve. May be overwritten in JXG.Curve#generateTerm.
Returns:
Left bound for the curve.
noHighlight
()
chainable
Uses the "normal" properties of the element.
normalize
()
private
chainable
Normalize the element's standard form.
notifyParents
-
contentStr
Finds dependencies in a given term and notifies the parents by adding the dependent object to the found objects child elements.
Parameters:
-
contentStr
StringString containing dependencies for the given object.
Returns:
Reference to the curve object.
prepareUpdate
()
private
chainable
Notify all child elements for updates.
remove
()
chainable
Removes the element from the construction. This only removes the SVG or VML node of the element and its label (if available) from the renderer, to remove the element completely you should use JXG.Board#removeObject.
removeChild
-
obj
Remove an element as a child from the current element.
Parameters:
-
obj
JXG.GeometryElementThe dependent object.
removeDescendants
-
obj
Removes the given object from the descendants list of this object and all its child objects.
Parameters:
-
obj
JXG.GeometryElementThe element that is to be removed from the descendants list.
resolveShortcuts
-
properties
Resolves property shortcuts like color and expands them, e.g. strokeColor and fillColor. Writes the expanded properties back to the given properties.
Parameters:
-
properties
Object
Returns:
The given parameter with shortcuts expanded.
setArrow
-
firstArrow
-
lastArrow
Determines whether the element has arrows at start or end of the arc.
setAttribute
-
attributes
Sets an arbitrary number of attributes.
Parameters:
-
attributes
ObjectAn object with attributes.
Example:
// Set property directly on creation of an element using the attributes object parameter
var board = JXG.JSXGraph.initBoard('jxgbox', {boundingbox: [-1, 5, 5, 1]};
var p = board.create('point', [2, 2], {visible: false});
// Now make this point visible and fixed:
p.setAttribute({
fixed: true,
visible: true
});
setDash
-
dash
Set the dash style of an object. See undefined for a list of available dash styles. You should use undefined instead of this method.
Parameters:
-
dash
NumberIndicates the new dash style
setLabel
-
str
Sets a label and it's text If label doesn't exist, it creates one
Parameters:
-
str
String
setLabelText
-
str
Updates the element's label text, strips all html.
Parameters:
-
str
String
setName
-
str
Updates the element's label text and the element's attribute "name", strips all html.
Parameters:
-
str
String
setParents
-
parents
Sets ids of elements to the array this.parents. First, this.parents is cleared. See undefined.
Parameters:
-
parents
ArrayArray of elements or ids of elements. Alternatively, one can give a list of objects as parameters.
Returns:
reference to the object itself.
setPosition
-
method
-
coords
Translates the object by (x, y). In case the element is defined by points, the defining points are translated, e.g. a circle constructed by a center point and a point on the circle line.
Parameters:
Returns:
Reference to the element object.
setPositionDirectly
-
method
-
coords
-
oldcoords
Moves an by the difference of two coordinates.
Parameters:
Returns:
this element
shadow
-
s
Set the shadow of an element
Parameters:
-
s
BooleanBoolean which determines whether the element has a shadow or not.
See also:
showElement
()
chainable
Make the element visible.
snapToGrid
()
JXG.GeometryElement
chainable
Snaps the element to the grid. Only works for points, lines and circles. Points will snap to the grid as defined in their properties undefined and undefined. Lines and circles will snap their parent points to the grid, if they have undefined set to true.
Returns:
Reference to the element.
snapToPoints
()
JXG.GeometryElement
chainable
Snaps the element to points. Only works for points. Points will snap to the next point as defined in their properties undefined and undefined. Lines and circles will snap their parent points to points.
Returns:
Reference to the element.
strokeColor
-
sColor
Set the strokeColor of an element
Parameters:
-
sColor
StringString which determines the stroke color of an object.
See also:
strokeWidth
-
width
Set the strokeWidth of an element
Parameters:
-
width
NumberInteger which determines the stroke width of an outline.
See also:
toJSON
()
private
EXPERIMENTAL. Generate JSON object code of visProp and other properties.
Returns:
JSON string containing element's properties.
update
()
JXG.Curve
chainable
Computes for equidistant points on the x-axis the values of the function
Returns:
Reference to the curve object.
See also:
updateCurve
()
JXG.Curve
chainable
Computes the path of coordinates defining the curve. For this various methods are used, depending whether the curve is defined by a data array of by function terms. If the mousemove event triggers this update, we use only few points. Otherwise, e.g. on mouseup, many points are used.
Returns:
Reference to the curve object.
updateDataArray
()
For dynamic dat aplots, updateDataArray
can be used to compute new entries
for the arrays JXG.Curve#dataX
and JXG.Curve#dataY
. It
is used in JXG.Curve#updateCurve. Default is an empty method, can
be overwritten by the user.
Example:
In this example the filled curve which shows the intersection of two polygons
is plotted. The curve is defined by the coordinates in dataX
and dataY
.
var i,
board = JXG.JSXGraph.initBoard('box', {boundingbox: [-8,8,8,-8], axis: true}),
pts1 = [[-2, 3], [-4, -3], [2, 0], [4, 4]],
pts2 = [[-2, -3], [-4, 1], [0, 4], [5, 1]];
// Clipping polygon
var pol = board.create('polygon', pts1,
{hasInnerPoints: true,
borders: {names: ['', '', '', '']},
name:'Polygon1', withLabel: true, visible: true,
fillColor: 'yellow'});
// Polygon to be clipped
var pol2 = board.create('polygon', pts2,
{hasInnerPoints: false,
borders: {names: ['', '', '', '']},
name:'Polygon2', withLabel: true, visible: true
});
var curve = board.create('curve', [[],[]], {fillColor: 'blue', fillOpacity: 0.4});
curve.updateDataArray = function() {
var mat = JXG.Math.transpose(pol.intersect(pol2));
if (mat.length == 3) {
this.dataX = mat[1];
this.dataY = mat[2];
} else {
this.dataX = [];
this.dataY = [];
}
};
board.update();
updateParametricCurve
-
mi
-
ma
Updates the data points of a parametric curve. This version is used if undefined is true.
Returns:
Reference to the curve object.
updateParametricCurveNaive
-
mi
-
ma
-
len
Updates the data points of a parametric curve using a fixed set of equidistant points. This version is used if undefined is false.
Parameters:
Returns:
Reference to the curve object.
updateParametricCurveOld
-
mi
-
ma
Updates the data points of a parametric curve. This version is used if undefined is true. Since 0.99 this algorithm is deprecated. It still can be used if undefined is true.
Returns:
Reference to the curve object.
updateRenderer
()
private
chainable
Provide updateRenderer method.
updateTransform
-
p
Applies the transformations of the curve to the given point p. Before using it, JXG.Curve#updateTransformMatrix has to be called.
Parameters:
Returns:
The given point.
updateTransformMatrix
()
JXG.Curve
private
chainable
Update the transfomration matrices bound to this curve.
Returns:
Reference to the curve object.
visible
-
v
Set the visibility of an element
Parameters:
-
v
BooleanBoolean which determines whether the element is drawn.
See also:
Properties
_org_type
Number
final
Original type of the element at construction time. Used for removing glider property.
dump
Boolean
The element is saved with an explicit entry in the file (true) or implicitly via a composition.
Default: true
hasLabel
Boolean
If element has a label subelement then this property will be set to true.
Default: false
isDraggable
Boolean
Controls if this element can be dragged. In GEONExT only free points and gliders can be dragged.
Default: false
lastDragTime
Date
Time stamp containing the last time this element has been dragged.
Default: creation time
methodMap
Object
The methodMap determines which methods can be called from within JessieCode and under which name it can be used. The map is saved in an object, the name of a property is the name of the method used in JessieCode, the value of a property is the name of the method in JavaScript.
name
String
Not necessarily unique name for the element.
Default: Name generated by {@link JXG.Board#generateName}.
See also:
notExistingParents
Object
Stores all Intersection Objects which in this moment are not real and so hide this element.
numberPoints
Number
Number of points on curves when plotted with updateParametricCurveNaive
.
This value changes between the attribute values numberPointsLow
and numberPointsHigh
.
The first value is taken during drag events, the latter one is taken in the up event.
It is set in JXG.Curve#updateCurve.
numTraces
Number
Counts the number of objects drawn as part of the trace of the element.
See also:
- JXG.GeometryElement#traced
- JXG.GeometryElement#clearTrace
- JXG.GeometryElement#traces
qdt
JXG.Math.Quadtree
Stores a quad tree if it is required. The quad tree is generated in the curve updates and can be used to speed up the hasPoint method.
quadraticform
Array
Quadratic form representation of circles (and conics)
Default: [[1,0,0],[0,1,0],[0,0,1]]
stdform
Array
[c,b0,b1,a,k,r,q0,q1]
See A.E. Middleditch, T.W. Stacey, and S.B. Tor: "Intersection Algorithms for Lines and Circles", ACM Transactions on Graphics, Vol. 8, 1, 1989, pp 25-40.
The meaning of the parameters is: Circle: points p=[p0,p1] on the circle fulfill a<p,p> + <b,p> + c = 0 For convenience we also store r: radius k: discriminant = sqrt(<b,b>-4ac) q=[q0,q1] center
Points have radius = 0. Lines have radius = infinity. b: normalized vector, representing the direction of the line.
Should be put into Coords, when all elements possess Coords.
Default: [1, 0, 0, 0, 1, 1, 0, 0]
traces
Object
Keeps track of all objects drawn as part of the trace of the element.
See also:
- JXG.GeometryElement#traced
- JXG.GeometryElement#clearTrace
- JXG.GeometryElement#numTraces
transformations
Array
Stores the transformations which are applied during update in an array
See also:
Events
attribute
Notify everytime an attribute is changed.
attribute:<attribute>
This is a generic event handler. It exists for every possible attribute that can be set for any element, e.g. if you want to be notified everytime an element's strokecolor is changed, is the event attribute:strokecolor.
down
Whenever the user starts to touch or click an element.
Event Payload:
-
e
EventThe browser's event object.
drag
This event is fired whenever the user drags an element.
Event Payload:
-
e
EventThe browser's event object.
mousedown
Whenever the user starts to click an element.
Event Payload:
-
e
EventThe browser's event object.
mousedrag
This event is fired whenever the user drags the element with a mouse.
Event Payload:
-
e
EventThe browser's event object.
mousemove
This event is fired whenever the user is moving the mouse over an element.
Event Payload:
-
e
EventThe browser's event object.
mouseout
This event is fired whenever the user puts the mouse away from an element.
Event Payload:
-
e
EventThe browser's event object.
mouseover
This event is fired whenever the user puts the mouse over an element.
Event Payload:
-
e
EventThe browser's event object.
mouseup
Whenever the user releases the mousebutton over an element.
Event Payload:
-
e
EventThe browser's event object.
move
This event is fired whenever the user is moving over an element.
Event Payload:
-
e
EventThe browser's event object.
out
This event is fired whenever the user is leaving an element.
Event Payload:
-
e
EventThe browser's event object.
over
This event is fired whenever the user is hovering over an element.
Event Payload:
-
e
EventThe browser's event object.
touchdown
Whenever the user starts to touch an element.
Event Payload:
-
e
EventThe browser's event object.
touchdrag
This event is fired whenever the user drags the element on a touch device.
Event Payload:
-
e
EventThe browser's event object.
touchup
Whenever the user stops touching an element.
Event Payload:
-
e
EventThe browser's event object.
up
Whenever the user stops to touch or click an element.
Event Payload:
-
e
EventThe browser's event object.