Difference between revisions of "Reflect images"
From JSXGraph Wiki
Jump to navigationJump to searchA WASSERMANN (talk | contribs) |
A WASSERMANN (talk | contribs) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<jsxgraph width="600" height="500"> | <jsxgraph width="600" height="500"> | ||
(function(){ | (function(){ | ||
− | var brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[-5,5,13,-2.5], | + | var brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[-5,5,13,-2.5], grid:true}); |
var p0, p1, p2, p3, p5, | var p0, p1, p2, p3, p5, | ||
l1, l2, | l1, l2, | ||
Line 10: | Line 10: | ||
// Define two line through four points | // Define two line through four points | ||
− | p0 = brd. | + | p0 = brd.create('point', [2,-2]); |
− | p1 = brd. | + | p1 = brd.create('point', [2,1]); |
− | p2 = brd. | + | p2 = brd.create('point', [10,-1]); |
− | l1 = brd. | + | l1 = brd.create('line', [p0, p1]); |
− | l2 = brd. | + | l2 = brd.create('line', [p1, p2]); |
− | p4 = brd. | + | p4 = brd.create('point', [-2,-2]); |
− | p5 = brd. | + | p5 = brd.create('point', [1,0]); |
X = function(){ return Math.min(p4.X(), p5.X()); }; | X = function(){ return Math.min(p4.X(), p5.X()); }; | ||
Line 29: | Line 29: | ||
im3 = brd.create('image',[imurl, [X, Y], [W, H]], {opacity:0.7}); | im3 = brd.create('image',[imurl, [X, Y], [W, H]], {opacity:0.7}); | ||
− | t1 = brd. | + | t1 = brd.create('transform', [l1], {type:'reflect'}); |
− | t2 = brd. | + | t2 = brd.create('transform', [l2], {type:'reflect'}); |
// Reflect im2 on l1 | // Reflect im2 on l1 | ||
t1.bindTo(im2); | t1.bindTo(im2); | ||
− | // Reflect | + | // Reflect im3 on l1 and on l2 |
t1.bindTo(im3); | t1.bindTo(im3); | ||
t2.bindTo(im3); | t2.bindTo(im3); | ||
Line 47: | Line 47: | ||
Here is the complete code to accomplish this behaviour. | Here is the complete code to accomplish this behaviour. | ||
<source lang="javascript"> | <source lang="javascript"> | ||
+ | (function(){ | ||
+ | var brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[-5,5,13,-2.5], grid:true}); | ||
+ | var p0, p1, p2, p3, p5, | ||
+ | l1, l2, | ||
+ | im1, im2, im3, | ||
+ | t1, t2, | ||
+ | imurl = "/distrib/images/uccellino.jpg", | ||
+ | X, Y, W, H; // Functions defining the position, width and height of the original image. | ||
+ | |||
+ | // Define two line through four points | ||
+ | p0 = brd.create('point', [2,-2]); | ||
+ | p1 = brd.create('point', [2,1]); | ||
+ | p2 = brd.create('point', [10,-1]); | ||
+ | |||
+ | l1 = brd.create('line', [p0, p1]); | ||
+ | l2 = brd.create('line', [p1, p2]); | ||
+ | |||
+ | p4 = brd.create('point', [-2,-2]); | ||
+ | p5 = brd.create('point', [1,0]); | ||
+ | |||
+ | X = function(){ return Math.min(p4.X(), p5.X()); }; | ||
+ | Y = function(){ return Math.min(p4.Y(), p5.Y()); }; | ||
+ | W = function(){ return Math.abs(p5.X() -p4.X()); }; | ||
+ | H = function(){ return Math.abs(p5.Y() -p4.Y()); }; | ||
+ | |||
+ | im1 = brd.create('image',[imurl, [X, Y], [W, H]], {opacity:0.7}); | ||
+ | im2 = brd.create('image',[imurl, [X, Y], [W, H]], {opacity:0.7}); | ||
+ | im3 = brd.create('image',[imurl, [X, Y], [W, H]], {opacity:0.7}); | ||
+ | |||
+ | t1 = brd.create('transform', [l1], {type:'reflect'}); | ||
+ | t2 = brd.create('transform', [l2], {type:'reflect'}); | ||
+ | |||
+ | // Reflect im2 on l1 | ||
+ | t1.bindTo(im2); | ||
+ | |||
+ | // Reflect im3 on l1 and on l2 | ||
+ | t1.bindTo(im3); | ||
+ | t2.bindTo(im3); | ||
+ | |||
+ | brd.update(); | ||
+ | |||
+ | })(); | ||
</source> | </source> | ||
[[Category:Examples]] | [[Category:Examples]] | ||
[[Category:Geometry]] | [[Category:Geometry]] |
Latest revision as of 15:00, 3 March 2021
The JavaScript code
Here is the complete code to accomplish this behaviour.
(function(){
var brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[-5,5,13,-2.5], grid:true});
var p0, p1, p2, p3, p5,
l1, l2,
im1, im2, im3,
t1, t2,
imurl = "/distrib/images/uccellino.jpg",
X, Y, W, H; // Functions defining the position, width and height of the original image.
// Define two line through four points
p0 = brd.create('point', [2,-2]);
p1 = brd.create('point', [2,1]);
p2 = brd.create('point', [10,-1]);
l1 = brd.create('line', [p0, p1]);
l2 = brd.create('line', [p1, p2]);
p4 = brd.create('point', [-2,-2]);
p5 = brd.create('point', [1,0]);
X = function(){ return Math.min(p4.X(), p5.X()); };
Y = function(){ return Math.min(p4.Y(), p5.Y()); };
W = function(){ return Math.abs(p5.X() -p4.X()); };
H = function(){ return Math.abs(p5.Y() -p4.Y()); };
im1 = brd.create('image',[imurl, [X, Y], [W, H]], {opacity:0.7});
im2 = brd.create('image',[imurl, [X, Y], [W, H]], {opacity:0.7});
im3 = brd.create('image',[imurl, [X, Y], [W, H]], {opacity:0.7});
t1 = brd.create('transform', [l1], {type:'reflect'});
t2 = brd.create('transform', [l2], {type:'reflect'});
// Reflect im2 on l1
t1.bindTo(im2);
// Reflect im3 on l1 and on l2
t1.bindTo(im3);
t2.bindTo(im3);
brd.update();
})();