{{ stepNode.name }}
| {{ 'ml-lesson-number-slides' | message : article.introSlideInfo.bblockCount}} |
| {{ 'ml-lesson-number-exercises' | message : article.introSlideInfo.exerciseCount}} |
| {{ 'ml-lesson-time-estimation' | message }} |
Estellecapor1@gmail.com (Diskussion | bidrag) (Den här versionen är märkt för översättning) | Jonas (Diskussion | bidrag) | ||
(En mellanliggande version av samma användare visas inte) | |||
Rad 5: | Rad 5: | ||
<jsxgpre id="symmetrilinje345"> | <jsxgpre id="symmetrilinje345"> | ||
− | / | + | /* Skapa koordinatsystemet */ |
− | / | + | /* Dimensioner för det utritade koordinatsystemet */ |
var xLeft = -11; | var xLeft = -11; | ||
var xRight = 11; | var xRight = 11; | ||
Rad 17: | Rad 17: | ||
var yax = b.yaxis(25,0); | var yax = b.yaxis(25,0); | ||
− | / | + | /* Kontrollvariabler så att man inte kan göra saker medan animationen körs */ |
var isAnimating = false; | var isAnimating = false; | ||
var hasPressedDown = false; | var hasPressedDown = false; | ||
− | / | + | /* De rörliga punkterna samt funktionen de definierar */ |
− | / | + | /* p1 är extrempunkten, p2 är den andra punkten */ |
+ | |||
+ | var p1 = b.point(-4.5,-3,{fixed:false, fillcolor:mlg.blue}); | ||
+ | var p2 = b.point(1.5,3,{fixed:false, fillcolor:mlg.blue}); | ||
+ | |||
function fnc(x) { | function fnc(x) { | ||
return (p1.Y() - p2.Y())*JXG.Math.pow((x-p2.X())/(p1.X() - p2.X()), 2) + p2.Y(); | return (p1.Y() - p2.Y())*JXG.Math.pow((x-p2.X())/(p1.X() - p2.X()), 2) + p2.Y(); | ||
− | } | + | } |
− | |||
− | |||
var xdist = Math.sqrt(-p2.Y() * Math.pow(p1.X() - p2.X(), 2) / (p1.Y() - p2.Y())); | var xdist = Math.sqrt(-p2.Y() * Math.pow(p1.X() - p2.X(), 2) / (p1.Y() - p2.Y())); | ||
Rad 54: | Rad 56: | ||
var flyttaMig2 = b.textA(2,0.75,'<translate><!--T:24--> Drag mig</translate>!',{anchor:p2}); | var flyttaMig2 = b.textA(2,0.75,'<translate><!--T:24--> Drag mig</translate>!',{anchor:p2}); | ||
− | // | + | /* Symmetrilinje */ |
var n1 = b.node(p2.X(), yTop + 0.9); | var n1 = b.node(p2.X(), yTop + 0.9); | ||
var n2 = b.node(p2.X(), yBottom - 1); | var n2 = b.node(p2.X(), yBottom - 1); | ||
var symLine = b.segment(n1, n2, {dash:3}); | var symLine = b.segment(n1, n2, {dash:3}); | ||
− | / | + | /* Label till symmetrilinjen */ |
var symText = b.textA(9,10,'<translate><!--T:14--> Symmetrilinje</translate>',{flag:true}); | var symText = b.textA(9,10,'<translate><!--T:14--> Symmetrilinje</translate>',{flag:true}); | ||
$(b.getId(symText)).css({ | $(b.getId(symText)).css({ | ||
Rad 68: | Rad 70: | ||
symText.moveTo([p2.X(), yBottom + 1.5]); | symText.moveTo([p2.X(), yBottom + 1.5]); | ||
− | / | + | /* Prototypvinkel och avstånd till flaggan på extrempunkten */ |
var fAngle = 30; | var fAngle = 30; | ||
var fDist = 3.5; | var fDist = 3.5; | ||
− | / | + | /* Flagga till extrempunkten */ |
var nFlag = b.node(fAngle, fDist); | var nFlag = b.node(fAngle, fDist); | ||
var nFlagPos = b.node( | var nFlagPos = b.node( | ||
Rad 91: | Rad 93: | ||
− | / | + | /* Begränsningar för var punkterna får vara. */ |
var xmax = xRight - 1.75; | var xmax = xRight - 1.75; | ||
var xmin = xLeft + 1.75; | var xmin = xLeft + 1.75; | ||
Rad 97: | Rad 99: | ||
var ymin = yBottom + 2.75; | var ymin = yBottom + 2.75; | ||
− | / | + | /* Hur nära punkterna får vara varandra i x- och y-led */ |
var clipDistX = 0.25; | var clipDistX = 0.25; | ||
var clipDistY = 0.05; | var clipDistY = 0.05; | ||
Rad 120: | Rad 122: | ||
} | } | ||
− | / | + | /* Se till att punkten håller sig inom ramarna */ |
if (p2.X() < xmin) { | if (p2.X() < xmin) { | ||
p2.moveTo([xmin, p2.Y()]); | p2.moveTo([xmin, p2.Y()]); | ||
Rad 134: | Rad 136: | ||
} | } | ||
− | / | + | /* Se till att punkten inte kommer för nära den andra punkten */ |
if (Math.abs(p2.X() - p1.X()) < clipDistX) { | if (Math.abs(p2.X() - p1.X()) < clipDistX) { | ||
var dSign = Math.sign(p2.X() - p1.X()); | var dSign = Math.sign(p2.X() - p1.X()); | ||
Rad 151: | Rad 153: | ||
if (Math.abs(p2.Y() - p1.Y()) < clipDistY) { | if (Math.abs(p2.Y() - p1.Y()) < clipDistY) { | ||
− | + | dSign = Math.sign(p2.Y() - p1.Y()); | |
if (dSign === 0) { | if (dSign === 0) { | ||
dSign = 1; | dSign = 1; | ||
Rad 173: | Rad 175: | ||
} | } | ||
− | / | + | /* Se till att punkten håller sig inom ramarna */ |
if (p1.X() < xmin) { | if (p1.X() < xmin) { | ||
p1.moveTo([xmin, p1.Y()]); | p1.moveTo([xmin, p1.Y()]); | ||
Rad 187: | Rad 189: | ||
} | } | ||
− | / | + | /* Se till att punkten inte kommer för nära den andra punkten */ |
if (Math.abs(p1.X() - p2.X()) < clipDistX) { | if (Math.abs(p1.X() - p2.X()) < clipDistX) { | ||
var dSign = Math.sign(p1.X() - p2.X()); | var dSign = Math.sign(p1.X() - p2.X()); | ||
Rad 204: | Rad 206: | ||
if (Math.abs(p1.Y() - p2.Y()) < clipDistY) { | if (Math.abs(p1.Y() - p2.Y()) < clipDistY) { | ||
− | + | dSign = Math.sign(p1.Y() - p2.Y()); | |
if (dSign === 0) { | if (dSign === 0) { | ||
dSign = 1; | dSign = 1; | ||
Rad 217: | Rad 219: | ||
} | } | ||
− | / | + | /* Byt texten som anger sortens extrempunkt */ |
if (p1.Y() < p2.Y()) { | if (p1.Y() < p2.Y()) { | ||
b.changeText(extremeFlag, '<translate><!--T:19--> Maximum</translate>'); | b.changeText(extremeFlag, '<translate><!--T:19--> Maximum</translate>'); | ||
Rad 233: | Rad 235: | ||
p2.setAttribute({fixed:true}); | p2.setAttribute({fixed:true}); | ||
− | / | + | /* Förbered symmetrilinjen */ |
n2.moveTo([p2.X(), 12]); | n2.moveTo([p2.X(), 12]); | ||
n1.moveTo([p2.X(), 12]); | n1.moveTo([p2.X(), 12]); | ||
− | / | + | /* Förbered label för symmetrilinjen */ |
if (p2.Y() > 0) { | if (p2.Y() > 0) { | ||
symText.moveTo([p2.X(), yBottom + 1.5]); | symText.moveTo([p2.X(), yBottom + 1.5]); | ||
Rad 249: | Rad 251: | ||
symText.moveTo([xLeft + 3, symText.Y()]); | symText.moveTo([xLeft + 3, symText.Y()]); | ||
} | } | ||
− | / | + | /* Förbered flagga för extrempunkten */ |
var flagUp = true; | var flagUp = true; | ||
var flagRight = true; | var flagRight = true; | ||
Rad 284: | Rad 286: | ||
var animTimer = 0; | var animTimer = 0; | ||
− | / | + | /* Animera symmetrilinjen */ |
n2.moveTo([p2.X(), -12], animTimer += 1000); | n2.moveTo([p2.X(), -12], animTimer += 1000); | ||
− | / | + | /* Visa label för symmetrilinje */ |
setTimeout(function() {b.show(symText);}, animTimer += 300); | setTimeout(function() {b.show(symText);}, animTimer += 300); | ||
− | / | + | /* Visa flagga för extrempunkten */ |
setTimeout(function() {b.show([extremeFlag, flagSegment]);}, animTimer += 500); | setTimeout(function() {b.show([extremeFlag, flagSegment]);}, animTimer += 500); | ||
setTimeout(function() { | setTimeout(function() { |
Två punkter på varsin halva med samma y-koordinat, t.ex. funktionens nollställen, ligger alltid på samma avstånd från symmetrilinjen. Symmetrilinjens ekvation anger vilket x-värde, a, som linjen ligger på.
xs=a
Det finns olika metoder för att bestämma symmetrilinjen. Ibland kan man läsa av den direkt i koordinatsystemet och har man funktionsuttrycket kan man använda pq-formeln.