<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://jsxgraph.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cleonis</id>
	<title>JSXGraph Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://jsxgraph.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cleonis"/>
	<link rel="alternate" type="text/html" href="https://jsxgraph.org/wiki/index.php?title=Special:Contributions/Cleonis"/>
	<updated>2026-04-05T22:37:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://jsxgraph.org/wiki/index.php?title=Line&amp;diff=6294</id>
		<title>Line</title>
		<link rel="alternate" type="text/html" href="https://jsxgraph.org/wiki/index.php?title=Line&amp;diff=6294"/>
		<updated>2014-08-30T20:07:44Z</updated>

		<summary type="html">&lt;p&gt;Cleonis: Added that &amp;#039;line&amp;#039; also accepts an array of two numbers, [x,y], as input for each of the points.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Construction of a line ==&lt;br /&gt;
A line needs two points. Lets construct two points &amp;quot;A&amp;quot; and &amp;quot;B&amp;quot;. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var b = JXG.JSXGraph.initBoard(&#039;jxgbox&#039;, {boundingbox: [-5, 2, 5, -2]});&lt;br /&gt;
var p1 = b.create(&#039;point&#039;,[-1,1], {name:&#039;A&#039;,size:4});&lt;br /&gt;
var p2 = b.create(&#039;point&#039;,[2,-1], {name:&#039;B&#039;,size:4});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Then we construct a line through &amp;quot;A&amp;quot; and &amp;quot;B&amp;quot;. The setting of a new color and changing the stroke-width is not necessary.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var li = b.create(&#039;line&#039;,[&amp;quot;A&amp;quot;,&amp;quot;B&amp;quot;], {strokeColor:&#039;#00ff00&#039;,strokeWidth:2});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;jsxgraph box=&amp;quot;jxgbox&amp;quot; width=&amp;quot;500&amp;quot; height=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
var b = JXG.JSXGraph.initBoard(&#039;jxgbox&#039;, {boundingbox: [-5, 2, 5, -2]});&lt;br /&gt;
var p1 = b.create(&#039;point&#039;,[-1,1], {name:&#039;A&#039;,size:4});&lt;br /&gt;
var p2 = b.create(&#039;point&#039;,[2,-1], {name:&#039;B&#039;,size:4});&lt;br /&gt;
var li = b.createElement(&#039;line&#039;,[&amp;quot;A&amp;quot;,&amp;quot;B&amp;quot;], {strokeColor:&#039;#00ff00&#039;,strokeWidth:2});&lt;br /&gt;
&amp;lt;/jsxgraph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generally it is better to use JavaScript variables and not Geometry-Element names when constructing.&lt;br /&gt;
Now, we do the same examples with JavaScript variables. Further, we don&#039;t show the whole line, but only a segment. To show another variation, we use a dashed line style.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var li2 = b.create(&#039;line&#039;,[p1,p2], &lt;br /&gt;
 {straightFirst:false, straightLast:false, strokeWidth:2, dash:2});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;jsxgraph box=&amp;quot;jxgbox2&amp;quot; width=&amp;quot;500&amp;quot; height=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
var b2 = JXG.JSXGraph.initBoard(&#039;jxgbox2&#039;, {boundingbox: [-5, 2, 5, -2]});&lt;br /&gt;
var p1 = b2.create(&#039;point&#039;,[-1,1], {name:&#039;A&#039;,size:4});&lt;br /&gt;
var p2 = b2.create(&#039;point&#039;,[2,-1], {name:&#039;B&#039;,size:4});&lt;br /&gt;
var li2 = b2.create(&#039;line&#039;,[p1,p2], {straightFirst:false, straightLast:false, strokeWidth:2, dash:2});&lt;br /&gt;
&amp;lt;/jsxgraph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Line&amp;quot; also accepts point coordinates as input, so you can create a line without having to declare the points separately. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var li3 = b3.create(&#039;line&#039;,[[-1,1],[2,-1]], {straightFirst:false, straightLast:false, strokeWidth:2});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;jsxgraph box=&amp;quot;jxgbox3&amp;quot; width=&amp;quot;500&amp;quot; height=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
var b3 = JXG.JSXGraph.initBoard(&#039;jxgbox3&#039;, {boundingbox: [-5, 2, 5, -2]});&lt;br /&gt;
var li3 = b3.create(&#039;line&#039;,[[-1,1],[2,-1]], {straightFirst:false, straightLast:false, strokeWidth:2});&lt;br /&gt;
&amp;lt;/jsxgraph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some of the options that can be used with lines. A complete list can be found on our [http://jsxgraph.uni-bayreuth.de/docs/symbols/Line.html Line reference page].&lt;br /&gt;
{| cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Attribute !! Type !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| strokeColor || HTML colorstring || Colors the line in the color specified.&lt;br /&gt;
|-&lt;br /&gt;
| highlightStrokeColor || HTML colorstring || Colors the line, when moused over, in the color specified. If same as strokeColor , removes highlighting.&lt;br /&gt;
|-&lt;br /&gt;
| strokeColorOpacity || float || Colors the line with the given opacity. Must be between 0 and 1.&amp;lt;br&amp;gt;0: Line is fully transparent.&amp;lt;br&amp;gt;1: Line is not transparent.&lt;br /&gt;
|-&lt;br /&gt;
| highlightStrokeColorOpacity || float || Colors the line, when moused over, with the given opacity. Must be between 0 and 1.&amp;lt;br&amp;gt;0: Line is fully transparent.&amp;lt;br&amp;gt;1: Line is not transparent.&lt;br /&gt;
|- &lt;br /&gt;
| dash || int || Creates a dashed line. Value must be between 0 and 6. &amp;lt;br&amp;gt; 0: solid line&amp;lt;br&amp;gt; 1: dotted line&amp;lt;br&amp;gt;2: line with small dashes&amp;lt;br&amp;gt;3: line with normal dashes&amp;lt;br&amp;gt;4: line with long dashes&amp;lt;br&amp;gt;5: line with alternating medium and big dashes and large gaps&amp;lt;br&amp;gt;6: line with alternating medium and big dashes and small gaps&lt;br /&gt;
|-&lt;br /&gt;
| strokeWidth || int || Determines the thickness of the line&lt;br /&gt;
|-&lt;br /&gt;
| straightFirst || bool || Determines whether the line is drawn beyond the first defining point.&lt;br /&gt;
|-&lt;br /&gt;
| straightLast || bool || Determines whether the line is drawn beyond the second defining point.&lt;br /&gt;
|-&lt;br /&gt;
| firstArrow || bool || Determines whether the line has an arrow at the first defining point.&lt;br /&gt;
|-&lt;br /&gt;
| lastArrow || bool || Determines whether the line has an arrow at the second defining point.&lt;br /&gt;
|-&lt;br /&gt;
| trace || bool || Determines whether the line is traced.&lt;br /&gt;
|-&lt;br /&gt;
| shadow || bool || Determines whether the line has a shadow.&lt;br /&gt;
|-&lt;br /&gt;
| visible || bool || Determines whether the line is shown.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Cleonis</name></author>
	</entry>
	<entry>
		<id>https://jsxgraph.org/wiki/index.php?title=User:Cleonis/sandbox/setInterval&amp;diff=6293</id>
		<title>User:Cleonis/sandbox/setInterval</title>
		<link rel="alternate" type="text/html" href="https://jsxgraph.org/wiki/index.php?title=User:Cleonis/sandbox/setInterval&amp;diff=6293"/>
		<updated>2014-08-30T19:25:56Z</updated>

		<summary type="html">&lt;p&gt;Cleonis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;jsxgraph width=&amp;quot;500&amp;quot; height=&amp;quot;500&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var board = JXG.JSXGraph.initBoard(&lt;br /&gt;
  &#039;jxgbox&#039;,&lt;br /&gt;
  {boundingbox:[-1.5,1.5,1.5,-1.5], keepaspectratio:true, axis:true}&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
var isPlaying = false;&lt;br /&gt;
var starttime = 0;&lt;br /&gt;
var timeElapsed = 0;&lt;br /&gt;
var interval;&lt;br /&gt;
&lt;br /&gt;
var p = board.create(&lt;br /&gt;
  &#039;point&#039;,&lt;br /&gt;
  [function() {return Math.cos(timeElapsed)}, function() {return Math.sin(timeElapsed)}]&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
function playing() {&lt;br /&gt;
  timeElapsed = (Date.now() - starttime)/1000;&lt;br /&gt;
  board.update();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function play() {&lt;br /&gt;
  if (!isPlaying) {&lt;br /&gt;
    starttime = Date.now();&lt;br /&gt;
    isPlaying = true;&lt;br /&gt;
    interval = setInterval(playing,50);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function resetAnimation() {&lt;br /&gt;
  clearInterval(interval);&lt;br /&gt;
  timeElapsed = 0;&lt;br /&gt;
  isPlaying = false;&lt;br /&gt;
  board.update();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/jsxgraph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;button id=&amp;quot;playbutton&amp;quot; onclick=&amp;quot;play()&amp;quot;&amp;gt;play&amp;lt;/button&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;button id=&amp;quot;resetanimation&amp;quot; onclick=&amp;quot;resetAnimation()&amp;quot;&amp;gt;reset&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The JavaScript code===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var board = JXG.JSXGraph.initBoard(&lt;br /&gt;
  &#039;jxgbox&#039;,&lt;br /&gt;
  {boundingbox:[-1.5,1.5,1.5,-1.5], keepaspectratio:true, axis:true}&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
var isPlaying = false;&lt;br /&gt;
var starttime = 0;&lt;br /&gt;
var timeElapsed = 0;&lt;br /&gt;
var interval;&lt;br /&gt;
&lt;br /&gt;
var p = board.create(&lt;br /&gt;
  &#039;point&#039;,&lt;br /&gt;
  [function() {return Math.cos(timeElapsed)}, function() {return Math.sin(timeElapsed)}]&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
function playing() {&lt;br /&gt;
  timeElapsed = (Date.now() - starttime)/1000;&lt;br /&gt;
  board.update();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function play() {&lt;br /&gt;
  if (!isPlaying) {&lt;br /&gt;
    starttime = Date.now();&lt;br /&gt;
    isPlaying = true;&lt;br /&gt;
    interval = setInterval(playing,50);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function resetAnimation() {&lt;br /&gt;
  clearInterval(interval);&lt;br /&gt;
  timeElapsed = 0;&lt;br /&gt;
  isPlaying = false;&lt;br /&gt;
  board.update();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The HTML===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;button id=&amp;quot;playbutton&amp;quot; onclick=&amp;quot;play()&amp;quot;&amp;gt;play&amp;lt;/button&amp;gt;&amp;lt;button id=&amp;quot;resetanimation&amp;quot; onclick=&amp;quot;resetAnimation()&amp;quot;&amp;gt;reset&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Cleonis</name></author>
	</entry>
	<entry>
		<id>https://jsxgraph.org/wiki/index.php?title=User:Cleonis/sandbox/setInterval&amp;diff=6292</id>
		<title>User:Cleonis/sandbox/setInterval</title>
		<link rel="alternate" type="text/html" href="https://jsxgraph.org/wiki/index.php?title=User:Cleonis/sandbox/setInterval&amp;diff=6292"/>
		<updated>2014-08-30T19:23:22Z</updated>

		<summary type="html">&lt;p&gt;Cleonis: Created page with &amp;quot;&amp;lt;jsxgraph width=&amp;quot;500&amp;quot; height=&amp;quot;500&amp;quot;&amp;gt;  var board = JXG.JSXGraph.initBoard(   &amp;#039;jxgbox&amp;#039;,   {boundingbox:[-1.5,1.5,1.5,-1.5], keepaspectratio:true, axis:true} );  var isPlaying = fals...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;jsxgraph width=&amp;quot;500&amp;quot; height=&amp;quot;500&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var board = JXG.JSXGraph.initBoard(&lt;br /&gt;
  &#039;jxgbox&#039;,&lt;br /&gt;
  {boundingbox:[-1.5,1.5,1.5,-1.5], keepaspectratio:true, axis:true}&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
var isPlaying = false;&lt;br /&gt;
var starttime = 0;&lt;br /&gt;
var timeElapsed = 0;&lt;br /&gt;
var requestId = 0;&lt;br /&gt;
&lt;br /&gt;
var p = board.create(&lt;br /&gt;
  &#039;point&#039;,&lt;br /&gt;
  [function() {return Math.cos(timeElapsed)}, function() {return Math.sin(timeElapsed)}]&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
function playing() {&lt;br /&gt;
  timeElapsed = (Date.now() - starttime)/1000;&lt;br /&gt;
  board.update();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function play() {&lt;br /&gt;
  if (!isPlaying) {&lt;br /&gt;
    starttime = Date.now();&lt;br /&gt;
    isPlaying = true;&lt;br /&gt;
    interval = setInterval(playing,50);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function resetAnimation() {&lt;br /&gt;
  clearInterval(interval);&lt;br /&gt;
  timeElapsed = 0;&lt;br /&gt;
  isPlaying = false;&lt;br /&gt;
  board.update();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/jsxgraph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;button id=&amp;quot;playbutton&amp;quot; onclick=&amp;quot;play()&amp;quot;&amp;gt;play&amp;lt;/button&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;button id=&amp;quot;resetanimation&amp;quot; onclick=&amp;quot;resetAnimation()&amp;quot;&amp;gt;reset&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The JavaScript code===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var board = JXG.JSXGraph.initBoard(&lt;br /&gt;
  &#039;jxgbox&#039;,&lt;br /&gt;
  {boundingbox:[-1.5,1.5,1.5,-1.5], keepaspectratio:true, axis:true}&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
var isPlaying = false;&lt;br /&gt;
var starttime = 0;&lt;br /&gt;
var timeElapsed = 0;&lt;br /&gt;
var requestId = 0;&lt;br /&gt;
&lt;br /&gt;
var p = board.create(&lt;br /&gt;
  &#039;point&#039;,&lt;br /&gt;
  [function() {return Math.cos(timeElapsed)}, function() {return Math.sin(timeElapsed)}]&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
function playing() {&lt;br /&gt;
  timeElapsed = (Date.now() - starttime)/1000;&lt;br /&gt;
  board.update();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function play() {&lt;br /&gt;
  if (!isPlaying) {&lt;br /&gt;
    starttime = Date.now();&lt;br /&gt;
    isPlaying = true;&lt;br /&gt;
    interval = setInterval(playing,50);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function resetAnimation() {&lt;br /&gt;
  clearInterval(interval);&lt;br /&gt;
  timeElapsed = 0;&lt;br /&gt;
  isPlaying = false;&lt;br /&gt;
  board.update();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The HTML===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;button id=&amp;quot;playbutton&amp;quot; onclick=&amp;quot;play()&amp;quot;&amp;gt;play&amp;lt;/button&amp;gt;&amp;lt;button id=&amp;quot;resetanimation&amp;quot; onclick=&amp;quot;resetAnimation()&amp;quot;&amp;gt;reset&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Cleonis</name></author>
	</entry>
	<entry>
		<id>https://jsxgraph.org/wiki/index.php?title=User:Cleonis/sandbox/requestAnimationFrame&amp;diff=6291</id>
		<title>User:Cleonis/sandbox/requestAnimationFrame</title>
		<link rel="alternate" type="text/html" href="https://jsxgraph.org/wiki/index.php?title=User:Cleonis/sandbox/requestAnimationFrame&amp;diff=6291"/>
		<updated>2014-08-26T21:00:10Z</updated>

		<summary type="html">&lt;p&gt;Cleonis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;jsxgraph width=&amp;quot;500&amp;quot; height=&amp;quot;500&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var board = JXG.JSXGraph.initBoard(&lt;br /&gt;
  &#039;jxgbox&#039;,&lt;br /&gt;
  {boundingbox:[-1.5,1.5,1.5,-1.5], keepaspectratio:true, axis:true}&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
var isPlaying = false;&lt;br /&gt;
var starttime = 0;&lt;br /&gt;
var timeElapsed = 0;&lt;br /&gt;
var requestId = 0;&lt;br /&gt;
&lt;br /&gt;
var p = board.create(&lt;br /&gt;
  &#039;point&#039;,&lt;br /&gt;
  [function() {return Math.cos(timeElapsed)}, function() {return Math.sin(timeElapsed)}]&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
function playing() {&lt;br /&gt;
  timeElapsed = (Date.now() - starttime)/1000;&lt;br /&gt;
  board.update();&lt;br /&gt;
  requestId = window.requestAnimationFrame(playing);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function play() {&lt;br /&gt;
  if (!isPlaying) {&lt;br /&gt;
    starttime = Date.now();&lt;br /&gt;
    isPlaying = true;&lt;br /&gt;
    window.requestAnimationFrame(playing);&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function resetAnimation() {&lt;br /&gt;
  if (requestId) {&lt;br /&gt;
    window.cancelAnimationFrame(requestId);&lt;br /&gt;
  }&lt;br /&gt;
  timeElapsed = 0;&lt;br /&gt;
  isPlaying = false;&lt;br /&gt;
  board.update();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/jsxgraph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;button id=&amp;quot;playbutton&amp;quot; onclick=&amp;quot;play()&amp;quot;&amp;gt;play&amp;lt;/button&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;button id=&amp;quot;resetanimation&amp;quot; onclick=&amp;quot;resetAnimation()&amp;quot;&amp;gt;reset&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The JavaScript code===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var board = JXG.JSXGraph.initBoard(&lt;br /&gt;
  &#039;jxgbox&#039;,&lt;br /&gt;
  {boundingbox:[-1.5,1.5,1.5,-1.5], keepaspectratio:true, axis:true}&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
var isPlaying = false;&lt;br /&gt;
var starttime = 0;&lt;br /&gt;
var timeElapsed = 0;&lt;br /&gt;
var requestId = 0;&lt;br /&gt;
&lt;br /&gt;
var p = board.create(&lt;br /&gt;
  &#039;point&#039;,&lt;br /&gt;
  [function() {return Math.cos(timeElapsed)}, function() {return Math.sin(timeElapsed)}]&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
function playing() {&lt;br /&gt;
  timeElapsed = (Date.now() - starttime)/1000;&lt;br /&gt;
  board.update();&lt;br /&gt;
  requestId = window.requestAnimationFrame(playing);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function play() {&lt;br /&gt;
  if (!isPlaying) {&lt;br /&gt;
    starttime = Date.now();&lt;br /&gt;
    isPlaying = true;&lt;br /&gt;
    window.requestAnimationFrame(playing);&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function resetAnimation() {&lt;br /&gt;
  if (requestId) {&lt;br /&gt;
    window.cancelAnimationFrame(requestId);&lt;br /&gt;
  }&lt;br /&gt;
  timeElapsed = 0;&lt;br /&gt;
  isPlaying = false;&lt;br /&gt;
  board.update();&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The HTML===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;button id=&amp;quot;playbutton&amp;quot; onclick=&amp;quot;play()&amp;quot;&amp;gt;play&amp;lt;/button&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;button id=&amp;quot;resetanimation&amp;quot; onclick=&amp;quot;resetAnimation()&amp;quot;&amp;gt;reset&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the command &#039;requestAnimationFrame&#039; must be given twice; it&#039;s present both in the function &#039;play()&#039; and in the function &#039;playing()&#039;.&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The function Date.now() returns a timestamp in miliseconds. To make the variable timeElapsed count time in seconds the number (Date.now() - starttime) is divided by 1000.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The function Date.now() is a relative new addition to Javascript. In the case of Internet Explorer: support of Date.now() was introduced in IE9.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Cleonis</name></author>
	</entry>
	<entry>
		<id>https://jsxgraph.org/wiki/index.php?title=User:Cleonis/sandbox/requestAnimationFrame&amp;diff=6290</id>
		<title>User:Cleonis/sandbox/requestAnimationFrame</title>
		<link rel="alternate" type="text/html" href="https://jsxgraph.org/wiki/index.php?title=User:Cleonis/sandbox/requestAnimationFrame&amp;diff=6290"/>
		<updated>2014-08-26T18:47:18Z</updated>

		<summary type="html">&lt;p&gt;Cleonis: Created page with &amp;quot;&amp;lt;jsxgraph width=&amp;quot;500&amp;quot; height=&amp;quot;500&amp;quot;&amp;gt;  var board = JXG.JSXGraph.initBoard(   &amp;#039;jxgbox&amp;#039;,   {boundingbox:[-1.5,1.5,1.5,-1.5], keepaspectratio:true, axis:true} );  var isPlaying = fals...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;jsxgraph width=&amp;quot;500&amp;quot; height=&amp;quot;500&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var board = JXG.JSXGraph.initBoard(&lt;br /&gt;
  &#039;jxgbox&#039;,&lt;br /&gt;
  {boundingbox:[-1.5,1.5,1.5,-1.5], keepaspectratio:true, axis:true}&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
var isPlaying = false;&lt;br /&gt;
var starttime = 0;&lt;br /&gt;
var timeElapsed = 0;&lt;br /&gt;
var requestId = 0;&lt;br /&gt;
&lt;br /&gt;
var p = board.create(&lt;br /&gt;
  &#039;point&#039;,&lt;br /&gt;
  [function() {return Math.cos(timeElapsed)}, function() {return Math.sin(timeElapsed)}]&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
function playing() {&lt;br /&gt;
  timeElapsed = (Date.now() - starttime)/1000;&lt;br /&gt;
  board.update();&lt;br /&gt;
  requestId = window.requestAnimationFrame(playing);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function play() {&lt;br /&gt;
  if (!isPlaying) {&lt;br /&gt;
    starttime = Date.now();&lt;br /&gt;
    isPlaying = true;&lt;br /&gt;
    window.requestAnimationFrame(playing);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function resetAnimation() {&lt;br /&gt;
  if (requestId) {&lt;br /&gt;
    window.cancelAnimationFrame(requestId);&lt;br /&gt;
  }&lt;br /&gt;
  timeElapsed = 0;&lt;br /&gt;
  isPlaying = false;&lt;br /&gt;
  board.update();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/jsxgraph&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;button id=&amp;quot;playbutton&amp;quot; onclick=&amp;quot;play()&amp;quot;&amp;gt;play&amp;lt;/button&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;button id=&amp;quot;resetanimation&amp;quot; onclick=&amp;quot;resetAnimation()&amp;quot;&amp;gt;reset&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The JavaScript code===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var board = JXG.JSXGraph.initBoard(&lt;br /&gt;
  &#039;jxgbox&#039;,&lt;br /&gt;
  {boundingbox:[-1.5,1.5,1.5,-1.5], keepaspectratio:true, axis:true}&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
var isPlaying = false;&lt;br /&gt;
var starttime = 0;&lt;br /&gt;
var timeElapsed = 0;&lt;br /&gt;
var requestId = 0;&lt;br /&gt;
&lt;br /&gt;
var p = board.create(&lt;br /&gt;
  &#039;point&#039;,&lt;br /&gt;
  [function() {return Math.cos(timeElapsed)}, function() {return Math.sin(timeElapsed)}]&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
function playing() {&lt;br /&gt;
  timeElapsed = (Date.now() - starttime)/1000;&lt;br /&gt;
  board.update();&lt;br /&gt;
  requestId = window.requestAnimationFrame(playing);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function play() {&lt;br /&gt;
  if (!isPlaying) {&lt;br /&gt;
    starttime = Date.now();&lt;br /&gt;
    isPlaying = true;&lt;br /&gt;
    window.requestAnimationFrame(playing);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function resetAnimation() {&lt;br /&gt;
  if (requestId) {&lt;br /&gt;
    window.cancelAnimationFrame(requestId);&lt;br /&gt;
  }&lt;br /&gt;
  timeElapsed = 0;&lt;br /&gt;
  isPlaying = false;&lt;br /&gt;
  board.update();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===The HTML===&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;button id=&amp;quot;playbutton&amp;quot; onclick=&amp;quot;play()&amp;quot;&amp;gt;play&amp;lt;/button&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;button id=&amp;quot;resetanimation&amp;quot; onclick=&amp;quot;resetAnimation()&amp;quot;&amp;gt;reset&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Examples]]&lt;/div&gt;</summary>
		<author><name>Cleonis</name></author>
	</entry>
</feed>