Comments (3)
I'm not sure about the coordinate system you're using. Again, I'm not sure how a coordinate system would work at all on the hyperbolic plane. I haven't looked into it enough yet.
I did notice one clear problem, however. When the player travels "straight" across the plane, it follows a Euclidean straight line. On the hyperbolic plane, straight lines appear as arcs of circles, each such circle intersects is orthogonal to the unit circle.
I will look into the coordinate system when I have an opportunity, but for now I suggest avoiding the use of vectors. Instead, give the player object a location Point, a speed, and an angle of facing. Then simply update the player's location using Point.distantPoint:
player.location = player.location.distantPoint(player.speed, player.angle)
The point returned by Point.distantPoint will now contain a third attribute in addition to x and y: direction. This is the direction the player would be facing after having traveled between point and the distantPoint. If Point.distantPoint is called without specifying an angle, the point is checked for this direction attribute, and that is used if present.
from hyperbolic-canvas.
So, to wrap, you might use this:
var currentDistance = player.location.distanceFromCenter();
if (currentDistance > maxDistance) {
var newPoint = Point.givenHyperbolicPolarCoordinates(2 * maxDistance - currentDistance, player.location.angle() + Math.PI);
newPoint.direction = player.location.direction;
player.location = newPoint;
}
from hyperbolic-canvas.
I realize this is a bit awkward, with the direction attribute on the returned Point object, but it's the only efficient way. I'll work on making it more user-friendly.
from hyperbolic-canvas.
Related Issues (12)
- Polygons not rendering correctly HOT 2
- how would I divide a polygon to triangles? HOT 4
- are hexagon tessellations possible in hyperbolic geometry? HOT 11
- Range Error: Maximum Call Stack Size Exceeded in Point.js [not a bug] HOT 15
- [Question] How to deal with polar coordinates? HOT 2
- Are the units off? HOT 10
- rendering bug when I add fancy graphics HOT 33
- bug: polygons can't have a vertex of (0,0) HOT 1
- Line object is too vague HOT 1
- distantPoint problem HOT 15
- how would I check if hyperbolic 2 lines intersect? HOT 13
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hyperbolic-canvas.