Download or view isometricProjection.frink in plain text format
/** This contains routines to derive equations for isometric projection.
See: https://en.wikipedia.org/wiki/Isometric_projection
*/
use Matrix.frink
symbolicMode[true]
t1 = new Matrix[[[sqrt[3], 0, -sqrt[3]],
[1, 2, 1 ],
[sqrt[2], -sqrt[2], sqrt[2]]]]
c = new Matrix[([ax, ay, az]).transpose[]]
d = t1.multiply[c].multiplyByScalar[1/sqrt[6]]
println[d.formatMatrix[]]
bt = new Matrix[[[1,0,0], [0,1,0], [0,0,0]]]
f = bt.multiply[d]
println[f.formatMatrix[]]
// All of this comes out to:
// bx = sqrt[2] (ax - az)
// by = sqrt[1/6] (ax + 2 ay + az)
// bz = sqrt[3] (ax - ay + az)
// (There really isnt' a z but if you want to color code it)
// The minima and maxima are:
// min bx = sqrt[2] (axmin - azmax)
// max bx = sqrt[2] (axmax - azmin)
// min by = sqrt[1/6] (axmin + 2 aymin + azmin)
// max by = sqrt[1/6] (axmax + 2 aymax + azmax)
// min bz = sqrt[3] (axmin - aymax + azmin)
// max bz = sqrt[3] (axmax - aymin + azmax)
// Or, inverted,
// ay = -ax + bx/(2*Sqrt[2]) + Sqrt[3/2]*by
// az = ax - bx/Sqrt[2]
Download or view isometricProjection.frink in plain text format
This is a program written in the programming language Frink.
For more information, view the Frink
Documentation or see More Sample Frink Programs.
Alan Eliasen was born 20145 days, 6 hours, 22 minutes ago.