i know how to rotate an object around a sphere only on one plane using sin and cos but i have no idea how it 3d, any ideas?
Hey!
You could create a point in the middle of the sphere that is connected to the object then just change its rotation.
A point on a sphere can be defined by two circles
You can therefore do something like:
cos(lon)*cos(lat), sin(lat), sin(lon)*cos(lat)
This formula looks kinda confusing but is really just
regularFormula = (cos(lon), 0, sin(long))
newFormula = regularFormula*cos(lat) + sin(lat)
The top regularFormula is what you already know
The new formula takes the Vector of the longitude circle at the specified point and, because its a unit vector, sets its new length/depth to the cos of the latitude
It then adds the height on to finalize it
Here are the actions taken, visualized:
- Find the normal longitudinal circle position
- Clip down length of Unit vector to desired latitudinal “depth”
- Move up the desired amount, resulting in final position (this is adequately described by the above image, just move from the tip of the cyan vector up sin(lat) to the tip of the green line, the desired position)
Some additional things:
In order to incorporate spheres of different sizes at different locations you could add some small things to the formula:
radius * ( cos(lon)*cos(lat), sin(lat), sin(lon)*cos(lat) ) + origin
What this would look like in lua code is along the lines of:
local position = radius * Vector3.new(math.cos(lon)*math.cos(lat), math.sin(lat), math.sin(lon)*math.cos(lat)) + origin
This would result in something like a longitude and latitude system