We can loop the calculator into itself by
wiring from an operand or the Result output
into another operand.
This will apply the sent value to the operand on the next frame.
This means while using the Add operation,
we can wire Result into one of the operands.
Then for every frame the other operand has a value,
that value is added to the result.
And the result is preserved indefinitely.
Turning the calculator off will reset all values,
and so all sent values, and the looped received value
This also means if we wire one operand into the other,
the first will contain the current value
and the second will contain the previous frame's value.
This is useful for comparing the current value with the previous value,
detecting a change, etc.
When a wire is plugged in, shows the
of the wire.
But will operate on the all values within the wire.
An 8 Numbers wire will only have its first component operated on
unless both values are 8 Numbers wires.
When a Time/Date is wired into either operand input its full date and time
#Greater Than: results in 1 if A is greater than B,
or 0 if A is not greater than B.
#Equal: results in 1 if A is the same value as B,
or 0 if A is not the same value as B.
#Less Than: results in 1 if A is less than B,
or 0 if A is not less than B.
Divides A into B as many whole times as possible, then outputs what’s left.
For example, 7 ÷ 2.
7 can be divided into 3 groups of two,
leaving 1 left over.
It cannot fill another group of 2 completely,
so 1 is the remainder.
Useful for finding how many times a number can go
into another number completely.
For example, if you want to find how many tens
are in 112, first find the remainder 2,
then subtract that from the original number 112 - 2 = 110.
This new number will be perfectly divisible by 10.
So divide that by 10(110 ÷ 10 = 11).
So there are 11 tens in 112.
Using remainder after division,
we can loop an input value around a specific range.
#Minimum: Results in the lower of the two values.
#Maximum: Results in the higher of the two values.
Trigonometric functions describing the relationship
between sides of a triangle and the angles of the corners
of the triangle.
for more information.)
I envision these functions as describing the relationship
between a 2D point’s position and its angles.
This forms a right-angled triangle by drawing a line
from (0,0) to the point, down to the X axis,
and back to (0,0).
In terms of traditional trigonometry labelling,
the angle would be between the x-axis round to the line to the point.
The horizontal line at the bottom would be known as the “adjacent,”
and its length is the same as the point’s X coordinate.
The vertical line on the right would be known as the “opposite,”
and its length is the same as the point’s Y coordinate.
The line to the point would be known as the “hypotenuse,”
and its length is the same as the point’s distance from (0,0).
So then the SOH-CAH-TOA memorisation technique still holds.
I’ll use the idea of a 2D point as a way of describing what
the functions output.
One way of thinking about what the result will be is the following:
Imagine the vectors as arrows starting at 0 and pointing out.
Now think of a grid plane touching the 0 point and the ends of both arrows.
One arrow is the “reference” arrow, and the grid is oriented and scaled such that
the x-axis starts at 0 and 1 on the x-axis is at the end of the arrow.
This may scale the grid up or down, which also scales the result up or down.
So if the reference vector has a length of 1, the result won’t be scaled at all.
On that grid, what X coordinate does the second vector have?
That’s what the dot product is between the two vectors.
Note, it could have a negative dot product if the
second vector is pointing in the opposite direction,
because on that graph it would be on the “left” of 0...
the negative side of the graph.
Note that it doesn’t actually matter which of the vectors you consider
to be the “reference” vector; the result would be the same.
Similarly, which vector you put into A and
which you put into B doesn’t matter.
Some common use cases:
When both vectors have a length of 1 (for example, 2 directions),
the result will be 1 if they are parallel,
0 if they are prependicular to each other (90 degrees),
and -1 if they are pointing in opposite directions.
So you can use this to figure out
how similar 2 directions are to each other.
When one vector has a length of 1 (for example, a direction),
the result will be how far along that “arrow” the other vector travels.
They may be pointing in different angles, but you’ll get the
amount of the direction that the other vector moves.
#Angle Between Vectors:
One way to understand how it gets to the angle that it outputs is:
Imagine a graph oriented such that it’s flat against 0,
and both of the points represented by the vectors.
Then a line is drawn from the origin to Operand A,
and another from the origin to Operand B.
This outputs the angle (in degrees) at the origin between those 2 lines.
While this uses the (0,0,0) origin position to measure an angle from,
both vectors can be translated (moved) such that
a different “origin” position is used.
#Vector Cross Product Normalised:
Results in the cross product of
A and B,
but the resulting vector is then normalised.
This is useful for getting the perpendicular direction
without worrying about its length.
This finds a vector that is perpendicular (90 degrees) to other vectors.
If you only send it one vector, there are an infinite number of other vectors
that are 90 degrees to it—so it will send out 0.
If you send it a second vector as well,
the result must be 90 degrees to both of the vectors.
This narrows things down to only 2 possibilities. But which one will it pick?
Dreams uses the “right hand rule.” (Tg)This means if you look at your right hand,
stick your thumb up (that’s the first vector),
point your index finger out (that’s the second vector),
and point your middle finger to the left of your index finger at a 90 degree angle.
The output will be a vector in the direction of your middle finger.
If you rotated the second vector until it was on the right side
of the first instead of pointing to the left,
it’s like you’d need to rotate your hand 180 degrees so it matches.
And so the middle finger would point away from you.
Similarly, the output vector will be pointing in the opposide direction.
So if you look at the vectors such that the second vector points
to the “left” of the first,
the result will be pointing towards you.
If the second vector is rotated such that it points to the “right,””
you’ve got to change perspective and look from the other side,
for the result to be pointing towards you.
The length of the vector has an interesting geometric property.
Imagine a triangle drawn along one vector to the end of the arrow,
across to the other vector’s arrow tip, and back down to the origin.
The length of the output vector is double that.
So for example:
If the 2 vectors are parallel, there’s no room for the triangle
and the output has a length of 0.
If the 2 vectors are perpendicular to each other you’ve got a right-angle triangle.
If the 2 vectors start to point in opposite directions,
the triangle will get slimmer and slimmer,
and so the output length will be smaller and smaller.
If you keep rotating the second vector and it starts
being on the right side of the first vector instead of the left side,
the same rule applies for the length of the output.
But the vector will be pointing in the opposite direction.
You could think of this as the length becoming “negative”
because it’s pointing the opposite way.