Java-Gaming.org Hi !
 Featured games (90) games approved by the League of Dukes Games in Showcase (684) Games in Android Showcase (196) games submitted by our members Games in WIP (752) games currently in development
 News: Read the Java Gaming Resources, or peek at the official Java tutorials
Pages: [1]
 ignore  |  Print
 Geting XYZ of a point along a line (vector)  (Read 885 times) 0 Members and 1 Guest are viewing this topic.
pixelprime

Junior Devvie

Medals: 3

 « Posted 2013-03-31 11:50:59 »

I know this may seem like a dumb question, but I'm having some odd problems when trying to calculate the position of a point in space along a vector.

My objective is to grab the XYZ coordinates of a point in space directly in front of the camera with a set distance.

I know the pitch, roll and yaw angles of the camera already, and my existing calculation looks like the following (angles in this example are originally stored as degrees, then converted into radians):

 1  2  3  4  5  6  7 `float addX = 5  * (float)Math.sin(Math.toRadians(camera.yaw));float addZ = 5  * (float)Math.cos(Math.toRadians(camera.yaw));float addY = 5  * (float)Math.sin(Math.toRadians(camera.pitch));float newX = camera.x + addX;float newZ = camera.z + addZ;float newY = camera.y + addY;`

The problem I have is that the new point - which does project in front of the camera as intended - doesn't seem to work along the Y axis correctly. It 'clamps' between the angles of -45° to +45°.

So, rotating the camera around the Y axis (yawing) seems to work great - the point 'fires' off from the camera in the right direction - but the plotting of the point in around the camera's pitch arc is out of whack!

For reference, this code is intended to be used as a line-of-sight calculation for detecting what the player is looking at.

Any help would be greatly appreciated. Thank you!
quew8

JGO Knight

Medals: 51

 « Reply #1 - Posted 2013-03-31 13:56:56 »

Your problem is that you've forgotten that pitch effects x, y and z values. It's very hard to explain without a diagram so I'm afraid I'm not even going to try.
Anyway here is the code I think you want:

 1  2  3  4  5  6 `double pitchRad = Math.toRadians(camera.pitch);double yawRad = Math.toRadians(camera.yaw);float f = (float)Math.cos(pitchRad);float addX = 5  * f * (float)Math.sin(yawRad);float addZ = 5  * f * (float)Math.cos(yawRad);float addY = 5  * (float)Math.sin(pitchRad);`

The important bit is the times f. The rest is just me absent mindedly changing code.
Please do bear in mind that I have to draw this out at least 3 times every time I try to solve the problem and I still get it wrong sometimes.
pixelprime

Junior Devvie

Medals: 3

 « Reply #2 - Posted 2013-04-01 14:21:55 »

Thanks for taking the time to post an example. Yes, it appears I've missed this somewhat obvious factor here, so I'll give your modifications a try and report my findings back here.

Thanks again!
pixelprime

Junior Devvie

Medals: 3

 « Reply #3 - Posted 2013-04-01 19:58:10 »

I just wanted to drop a final post on to say that the code worked a treat - thank you very much!

I modified my original XYZ projection code with the coefficient cosine / sine angles and everything now behaves as expected, thanks a bundle!
Pages: [1]
 ignore  |  Print

You cannot reply to this message, because it is very, very old.

 orrenravid (281 views) 2016-07-16 03:57:23 theagentd (349 views) 2016-07-11 14:28:54 Hydroque (436 views) 2016-07-06 05:56:57 Hydroque (595 views) 2016-07-03 08:52:54 GrandCastle (453 views) 2016-07-01 09:13:47 GrandCastle (442 views) 2016-07-01 09:09:45 CopyableCougar4 (496 views) 2016-06-25 16:56:52 Hydroque (449 views) 2016-06-22 02:17:53 SwampChicken (414 views) 2016-06-20 13:22:57 SwampChicken (315 views) 2016-06-20 13:22:49
 Archive 32x Spasi 26x Brynn 23x Slyth2727 22x orangepascal 21x orange451 20x TritonDreyja 17x EgonOlsen 16x LiquidNitrogen 11x Opiop 11x h.pernpeintner 11x Phased 10x Longor1996 10x Ecumene 9x ziozio 9x theagentd 9x
 Making a Dynamic Plugin Systemby Hydroque2016-06-25 00:13:25Java Data structures2016-06-13 21:22:09Java Data structures2016-06-13 21:20:42FPS Camera Tutorialby Hydroque2016-05-22 05:40:58Website offering 3D Models specifically for games for freeby vusman2016-05-18 17:23:09Website offering 3D Models specifically for games for freeby vusman2016-05-09 08:50:56Website offering 3D Models specifically for games for freeby vusman2016-05-06 11:10:21Website offering 3D Models specifically for games for freeby vusman2016-04-29 12:56:17
 java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org