Solved

java 3d bounds

Posted on 2011-03-02
2
667 Views
Last Modified: 2013-12-26
Hi everyone,
I'm new to this forum and new to Java 3d. I've been trying to solve my problem for days but I can't find a solution! I am creating a mind map(like a graph) and I have problem with intersection. I use spheres for the nodes and cylinders as the links between them. I have a  function where it calculates the position of the node(each node can have 18 children around it) and how to position the cylinder(edge). I have added boundingspheres to the nodes to check for intersections and it works fine but I'm trying to add boundingboxes to the links and get the wrong results. Can anyone tell me how to add a boundingbox around a cylinder? Oh I have to check for intersections before I add the nodes and links to the scene so I have to check the boundingbox depending on the position that the cylinder will have afterwards... I hope I make sense...


0
Comment
Question by:aquarius4291
2 Comments
 
LVL 25

Accepted Solution

by:
InteractiveMind earned 250 total points
ID: 35075150
I personally would not add a bounding box to the cylinders. It is fairly straightforward to check for cylinder-cylinder and cylinder-sphere intersections:

Cylinder-sphere
------------------------
Let the cylinder start at x, be of radius r, length L, direction d.
Let the sphere be at o, radius R.
Find the shortest distance between the point o and the line x+t*d, as outlined here:
http://mathworld.wolfram.com/Point-LineDistance3-Dimensional.html
Then if the shortest distance is greater than (r+R) then they do NOT intersect.
Otherwise, if the closest point is for t<L, then they DO intersect.

Cylinder-cylinder
-------------------------
Exactly the same concept.
Suppose cylinder A begins at x_A, is of length L_A, has radius r_A, and points in the direction d_A.
Similarly for cylinder B.
Then compute the shortest distance between the axes of each cylinder, as explained here:
http://www.softsurfer.com/Archive/algorithm_0106/algorithm_0106.htm (It's just one equation)
Is this distance greater than (r_A+r_B)? If so, then they do NOT intersect.
Otherwise, suppose the point on the axis of A which is closest to the axis of B is x_A+t*d_A, where t is a parameter. Then if t<L then the cylinders DO intersect.

Does that make sense?
0
 

Author Comment

by:aquarius4291
ID: 35081874
It does make sense but doesn't that mean that for every new node I will have to check for intersection between the new one and all the others that already exist? I'm currently using bounds.intersect and I give an array of all the bounds as a parameter. I assume that a for loop happens 'behind the scenes' but isn't it easier this way? Also even though I do save the coordinates for each object, the cylinders are rotated in different ways which makes it a bit difficult to calculate the area each one covers.
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Windows 10 IE Certificate Issue 10 51
javap not working 8 58
pagenation logic how it is working in my code 1 54
printf performancy 11 69
By the end of 1980s, object oriented programming using languages like C++, Simula69 and ObjectPascal gained momentum. It looked like programmers finally found the perfect language. C++ successfully combined the object oriented principles of Simula w…
Recently, in one of the tech-blogs I usually read, I saw a post about the best-selling video games through history. The first place in the list is for the classic, extremely addictive Tetris. Well, a long time ago, in a galaxy far far away, I was…
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:
The viewer will learn how to implement Singleton Design Pattern in Java.

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question