Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - phmenard

#1
Support / [Solved]
September 15, 2013, 11:29:10 PM
I figured it out ... seems the + and - signs make a big difference when orbiting on the z axis ... so with that said here is the code if you want to make your own unique orbits ...



myOrbitAngle += myOrbitSpeed;
if(myOrbitAngle > Math.PI * 2)
   myOrbitAngle %= Math.PI * 2; 
   SimpleVector sv = new SimpleVector();

   //double rad = (myOrbitAngle * (Math.PI / 180)); // Converting Degrees To Radians
   double x = myOrbit.getTransformedCenter().x - distanceFromParent * (Math.cos(myOrbitAngle)* .5);
   double z = myOrbit.getTransformedCenter().z - distanceFromParent * (Math.sin(myOrbitAngle) * 1);
       
   sv.x = (float) x;
   sv.z = (float) z;
   sv.y = 0;

   myObject.clearTranslation();
   myObject.translate(sv);
   myObject.rotateY(myOrbitSpeed);


if you want to orbit on a different axis just change around the x,y,z cords as needed ... as I said this code orbits the z axis. The floating point and whole number after the cos and sin add the option of playing around with the orbit ... stretch it to elliptical ... widen it ect.

Have fun ... I know I am ... now if I could only get a blazing sun rather than a dull object giving off light :-)
#2
Support / Re: Object3D rotation around another object
September 15, 2013, 06:51:36 PM
why is it that the following code will not orbit the orbitCenter ... instead its starts off ok but then dives right into orbitCenter and continues to do so ...

SimpleVector sv = new SimpleVector();
 
myOrbitAngle += myOrbitSpeed;
        if(myOrbitAngle > Math.PI * 2)
        myOrbitAngle %= Math.PI * 2;

        //float rad = (float) (myOrbitAngle * (Math.PI / 180)); // Converting Degrees To Radians
        sv.x = (float) (orbitCenter.x + distanceFromParent * Math.sin(myOrbitAngle));
        sv.z = (float) (orbitCenter.z + distanceFromParent * Math.cos(myOrbitAngle));

   


Log.w("pos", sv.toString() );
myObject.translate(sv);

myObject.rotateY(myOrbitSpeed);
#3
Support / Re: Object3D rotation around another object
September 13, 2013, 09:56:19 PM
I thought and seen the same thing ... so now I have this ..

SimpleVector sv = new SimpleVector();
 
myOrbitAngle += myOrbitSpeed;
        if(myOrbitAngle > Math.PI * 2)
        myOrbitAngle %= Math.PI * 2;

sv.z = (float) ((Math.cos(myOrbitAngle * distanceFromParent)) + myOrbit.getTransformedCenter().z);
sv.x = (float) ((Math.sin(myOrbitAngle * distanceFromParent)) +  myOrbit.getTransformedCenter().x);
    sv.y =  myOrbit.getTransformedCenter().y;

    //myObject.clearTranslation();
    myObject.translate(sv);


but still off center ... I'll get it ... lol
#4
Support / Re: Object3D rotation around another object
September 13, 2013, 08:42:56 PM
using the method myObject.clearTranslation(); results in the object not being drawn for some reason ... I have this ..

SimpleVector sv = new SimpleVector();
 
myOrbitAngle += myOrbitSpeed;
        if(myOrbitAngle > Math.PI * 2)
        myOrbitAngle %= Math.PI * 2;

sv.x = (float) ((Math.cos(myOrbitAngle)) + myOrbit.getTransformedCenter().x);
sv.y = (float) ((Math.sin(myOrbitAngle)) +  myOrbit.getTransformedCenter().y);
    sv.z =  myOrbit.getTransformedCenter().z;

    //myObject.clearTranslation();
    myObject.translate(sv);


the planet clearly orbits in an elliptical fashion ... but not around it orbit center(myOrbit) I'm missing something ...
#5
Support / Re: Object3D rotation around another object
September 13, 2013, 06:29:41 PM
ok thanks ... before I end this thread what would be the best way to go about making an elliptical orbit rather than a circle given the fact most planets don't orbit in a perfect circle ... I playing around with code like this but I'm not able to get it right.



SimpleVector sv = new SimpleVector();
sv.x = (float) (myOrbit.getTransformedCenter().x + Math.sin(myOrbitAngle*Math.PI/180) * Math.cos(myOrbitAngle*Math.PI/180));
sv.y = (float) (myOrbit.getTransformedCenter().y  + Math.sin(myOrbitAngle*Math.PI/180));// * Math.sin(.5));
//sv.z = (float) (myOrbit.getTransformedCenter().z  + Math.cos(myOrbitAngle*Math.PI/180));


myOrbitAngle += myOrbitSpeed; 

myObject.translate(sv);


#6
Support / Re: Object3D rotation around another object
September 10, 2013, 12:07:50 AM
silly me ... works perfect ... just need to rotate on the z axis not the y. What's up with these dummy objects any way??? are they costly to have around?? ... example ... a model of our solar system would require 9 dummy objects to control the orbits of each planet given that they orbit and rotate at different speeds.0 ... would it be better to use some old school math???

kinda off topic but while I'm here ... is there a way to make an abject glow .. like a sun ... texture effect maybe??

thanks a bunch for your help EgonOlsen
#7
Support / Re: Object3D rotation around another object
September 09, 2013, 12:31:40 AM
ok did that ... now the earth is just sitting there spinning rather that rotating around the center ... hmm ... any advice??
#8
Support / Re: Object3D rotation around another object
September 08, 2013, 11:19:09 PM
I took your advice and its not working ... I do this in
onSurfaceChanged()


center = Object3D.createDummyObj();
center.translate(sol[0].getTransformedCenter());
center.build();

earth[0].translate(0, 50, 0);
earth[0].setTexture("texture");
earth[0].addChild(center);


and in onDrawFrame()


center.rotateY(1f);


but nothing happends ... whats am I doing wrong?? the sol and earth objects are loaded obj models.