Difference between revisions of "V"
Jump to navigation
Jump to search
(Initial commit) |
m (update) |
||
| Line 28: | Line 28: | ||
<syntaxhighlight lang="java"> | <syntaxhighlight lang="java"> | ||
| − | V pos = new V(...); | + | final V pos = new V(...); |
for (...) { | for (...) { | ||
| − | pos.project_( | + | pos.project_(heading, velocity); // trailing dash means inplace |
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | which is | + | which is much faster beacuse it can be replaced with scalar internally (in JVM), which means your code actually have the performance of this: |
| + | |||
| + | <syntaxhighlight lang="java"> | ||
| + | double x = ...; | ||
| + | double y = ...; // | ||
| + | |||
| + | for (...) { | ||
| + | double nextX = ...; // some fast math | ||
| + | double nextY = ...; // some fast math | ||
| + | |||
| + | x = nextX; | ||
| + | y = nextY; | ||
| + | } | ||
| + | </syntaxhighlight> | ||
Revision as of 07:33, 8 August 2018
| This article is a stub. You can help RoboWiki by expanding it. |
This page is dedicated for describing the aaa.util.math.V
V is a vector 2d library that simplifies/boosts geom in robocoding.
It's common for robocoders to write code like this:
Point2D.Double project(Point2D.Double point, double angle, double distance) {
return new Point2D.Double(point.getX() + distance * Math.sin(angle), point.getY() + distance * Math.cos(angle));
}
Point2D.Double pos = ...;
for (...) {
pos = project(pos, heading, velocity);
}
However, this is slow.
With V, you have code like this
final V pos = new V(...);
for (...) {
pos.project_(heading, velocity); // trailing dash means inplace
}
which is much faster beacuse it can be replaced with scalar internally (in JVM), which means your code actually have the performance of this:
double x = ...;
double y = ...; //
for (...) {
double nextX = ...; // some fast math
double nextY = ...; // some fast math
x = nextX;
y = nextY;
}