Difference between revisions of "Shear transformation"

From JSXGraph Wiki
Jump to navigationJump to search
 
(14 intermediate revisions by the same user not shown)
Line 12: Line 12:
 
JXG.Options.label.autoPosition = true;
 
JXG.Options.label.autoPosition = true;
 
JXG.Options.text.fontSize = 20;
 
JXG.Options.text.fontSize = 20;
var board = JXG.JSXGraph.initBoard('jxgbox', { boundingbox: [-8, 8, 8, -8], axis: true});
+
JXG.Options.line.strokeWidth = 1;
 +
 
 +
var board = JXG.JSXGraph.initBoard('jxgbox', { boundingbox: [-5, 14, 14, -5], axis: true});
  
 
var x = board.defaultAxes.x;
 
var x = board.defaultAxes.x;
 
var y = board.defaultAxes.y;
 
var y = board.defaultAxes.y;
  
var q = board.create('point', [1, 2], {name: 'q', snapToGrid: true});
+
var q = board.create('point', [2, 10], {name: 'q', snapToGrid: false});
 
var q1 = board.create('point', [
 
var q1 = board.create('point', [
 
         () => q.X() + q.Y(),
 
         () => q.X() + q.Y(),
 
         () => q.Y()
 
         () => q.Y()
     ], {name: 'φ(q)'});
+
     ], {name: 'φ(q)', color: 'blue'});
  
 
var qx = board.create('point', [
 
var qx = board.create('point', [
Line 28: Line 30:
 
     ], {visible: false});
 
     ], {visible: false});
  
var l1 = board.create('line', [q, q1], {strokeWidth: 1});
 
 
var s1 = board.create('segment', [q, q1], {dash:2});
 
var s1 = board.create('segment', [q, q1], {dash:2});
 
var s2 = board.create('segment', [qx, q], {dash:2});
 
var s2 = board.create('segment', [qx, q], {dash:2});
 +
var l1 = board.create('line', [q, qx], {visible: false});
 +
 +
var r1 = board.create('line', [[0, 0], q], {straightFirst: false});
 +
 +
var p = board.create('glider', [1, 3, r1], {name: 'p'});
 +
var p1 = board.create('point', [
 +
        () => p.X() + p.Y(),
 +
        () => p.Y()
 +
    ], {name: 'φ(p)', color: 'blue'});
 +
 +
var px = board.create('point', [
 +
        () => p.X(),
 +
        () => 0
 +
    ], {visible: false});
 +
 +
var r2 = board.create('line', [[0, 0], q1], {straightFirst: false});
  
 +
var s3 = board.create('segment', [p, p1], {dash:2});
 +
var s4 = board.create('segment', [px, p], {dash:2});
  
 +
board.create('hatch', [s1, 1]);
 +
board.create('hatch', [s2, 1]);
  
 +
board.create('hatch', [s3, 2]);
 +
board.create('hatch', [s4, 2]);
 
</jsxgraph>
 
</jsxgraph>
 
  
 
=== The underlying JavaScript code ===
 
=== The underlying JavaScript code ===
  
 
<source lang="javascript">
 
<source lang="javascript">
 +
JXG.Options.label.autoPosition = true;
 +
JXG.Options.text.fontSize = 20;
 +
JXG.Options.line.strokeWidth = 1;
 +
 +
var board = JXG.JSXGraph.initBoard('jxgbox', { boundingbox: [-5, 14, 14, -5], axis: true});
 +
 +
var x = board.defaultAxes.x;
 +
var y = board.defaultAxes.y;
 +
 +
var q = board.create('point', [2, 10], {name: 'q', snapToGrid: false});
 +
var q1 = board.create('point', [
 +
        () => q.X() + q.Y(),
 +
        () => q.Y()
 +
    ], {name: '&phi;(q)', color: 'blue'});
 +
 +
var qx = board.create('point', [
 +
        () => q.X(),
 +
        () => 0
 +
    ], {visible: false});
 +
 +
var s1 = board.create('segment', [q, q1], {dash:2});
 +
var s2 = board.create('segment', [qx, q], {dash:2});
 +
var l1 = board.create('line', [q, qx], {visible: false});
 +
 +
var r1 = board.create('line', [[0, 0], q], {straightFirst: false});
 +
 +
var p = board.create('glider', [1, 3, r1], {name: 'p'});
 +
var p1 = board.create('point', [
 +
        () => p.X() + p.Y(),
 +
        () => p.Y()
 +
    ], {name: '&phi;(p)', color: 'blue'});
 +
 +
var px = board.create('point', [
 +
        () => p.X(),
 +
        () => 0
 +
    ], {visible: false});
 +
 +
var r2 = board.create('line', [[0, 0], q1], {straightFirst: false});
 +
 +
var s3 = board.create('segment', [p, p1], {dash:2});
 +
var s4 = board.create('segment', [px, p], {dash:2});
  
 +
board.create('hatch', [s1, 1]);
 +
board.create('hatch', [s2, 1]);
  
 +
board.create('hatch', [s3, 2]);
 +
board.create('hatch', [s4, 2]);
 
</source>
 
</source>
 
[[Category:Examples]]
 
[[Category:Examples]]
 
[[Category:Geometry]]
 
[[Category:Geometry]]

Latest revision as of 09:32, 31 May 2021

Shear transformation

[math] \varphi: {\cal A}(\mathbb{R}^2) \to {\cal A}(\mathbb{R}^2), \; x \mapsto \begin{pmatrix}1 & 1 \\ 0& 1\end{pmatrix} [/math]

Points of the form [math]{x\choose \lambda}[/math] are mapped to:

[math] \varphi({x\choose \lambda}) = {x + \lambda\choose} [/math]

The underlying JavaScript code

JXG.Options.label.autoPosition = true;
JXG.Options.text.fontSize = 20;
JXG.Options.line.strokeWidth = 1;

var board = JXG.JSXGraph.initBoard('jxgbox', { boundingbox: [-5, 14, 14, -5], axis: true});

var x = board.defaultAxes.x;
var y = board.defaultAxes.y;

var q = board.create('point', [2, 10], {name: 'q', snapToGrid: false});
var q1 = board.create('point', [
        () => q.X() + q.Y(),
        () => q.Y()
    ], {name: '&phi;(q)', color: 'blue'});

var qx = board.create('point', [
        () => q.X(),
        () => 0
    ], {visible: false});

var s1 = board.create('segment', [q, q1], {dash:2});
var s2 = board.create('segment', [qx, q], {dash:2});
var l1 = board.create('line', [q, qx], {visible: false});

var r1 = board.create('line', [[0, 0], q], {straightFirst: false});

var p = board.create('glider', [1, 3, r1], {name: 'p'});
var p1 = board.create('point', [
        () => p.X() + p.Y(),
        () => p.Y()
    ], {name: '&phi;(p)', color: 'blue'});

var px = board.create('point', [
        () => p.X(),
        () => 0
    ], {visible: false});

var r2 = board.create('line', [[0, 0], q1], {straightFirst: false});

var s3 = board.create('segment', [p, p1], {dash:2});
var s4 = board.create('segment', [px, p], {dash:2});

board.create('hatch', [s1, 1]);
board.create('hatch', [s2, 1]);

board.create('hatch', [s3, 2]);
board.create('hatch', [s4, 2]);