How to get rotation of an object with respect to x axis - Gideros Forum

#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

#### Top Posters

• ar2rsawseen 6991
• SinisterSoft 3812
• hgy29 2462
• keszegh 2055
• antix 2033
• OZApps 1983
• totebo 1764
• oleg 1574
• hgvyas123 1412
• techdojo 1321
• phongtt 1029
• Mells 1024
• MikeHart 1020
• john26 995
• GregBUG 962
• pie 960
• talis 908
• Scouser 898
• Apollo14 868
• MoKaLux 841

# How to get rotation of an object with respect to x axis

edited May 2014
I have 2 objects and Both of them are rotating

object1 is rotating at an anchor point and I have done something like this to make it rotate
object1:setRotation(object1:getRotation() + 4) and so if I do

print(object1:getRotation()) in some part of code, all it does is starting from some value, increments it by 4 degrees and goes on till thousands, but what I wanted was it should return the values with in the range of 360 degrees.

2. my object 2 is moving around an eclipse following the equation of eclipse to move and jumps(at a particular event),
now if I check object2:getRotation() at any point of time, even if it jumped, it always always returns 0.

to check the collision of these two object, I need to have their angles so that I can use TNT collision engine ,right? So how do I fix it?
I am attaching an image in case I could not explain it well

• To keep the rotation of object1 in the 360 degree range you could do something like:
 ```if object1:getRotation()>360 then object1:setRotation(object1:getRotation()-360) end```
If object2 is your character and if that is always upright then its rotation will be 0. I guess you must have an angle value for where the character is around your ellipse in the equation you are using to make it follow that path.
• @petec : Yes, Right. I have used eclipse equation translate the character along the eclipse, its angle is always 0, but how do I get the angle value for the character?
• Presumably you are using an angle that keeps increasing to move the character around the ellipse. If so, don't you already have an angle value for where the character is around the ellipse?
• edited May 2014
Hi @simran
I was reading your case and found it interesting (I love the clock problems).
so I have developed a code which I hope will help you better manage Gideros ```--------------------------------------------- -- COLOR: RGB TO HEX --------------------------------------------- function rgb(r, g, b) return ((r*256)+g)*256+b end   --------------------------------------------- -- SET BACKGROUND --------------------------------------------- application:setBackgroundColor(rgb(0, 0, 0))     ---------------------------------------- -- LOCK ORIENTATION ---------------------------------------- stage:setOrientation(Stage.PORTRAIT)     ---------------------------------------- -- FIX DIMENSION DEVICE ---------------------------------------- _W, _H = application:getContentWidth(), application:getContentHeight() Wdx = application:getLogicalTranslateX() / application:getLogicalScaleX() Hdy = application:getLogicalTranslateY() / application:getLogicalScaleY()     --[[ ---------------------------------------- -- CLASS DRAW ARC ---------------------------------------- -- thanks to @ndoss -- http://giderosmobile.com/forum/discussion/346/snippet-arccircleellipse#Item_1 ]] Arc = gideros.class(Shape) function Arc:init(t) local x = t.x or t.y or 0 local y = t.y or t.x or 0 local fillStyle = t.fillStyle or { Shape.SOLID, 0x000000, 0.5 } local lineStyle = t.lineStyle or { 2, 0xffffff, 0.5 } local xradius = t.xradius or t.radius or 100 local yradius = t.yradius or t.radius or 100 local sides = t.sides or (xradius + yradius)/2 local startAngle = t.startAngle or 0 local arcAngle = t.arcAngle or 1   self:setFillStyle(unpack(fillStyle)) self:setLineStyle(unpack(lineStyle))   local angleStep = arcAngle / sides   self:setPosition(x,y) local xx = math.cos(startAngle*2*math.pi) * xradius local yy = math.sin(startAngle*2*math.pi) * yradius   self:beginPath() self:moveTo(xx, yy) for i = 1,sides do local angle = startAngle + i * angleStep self:lineTo(math.cos(angle*2*math.pi) * xradius, math.sin(angle*2*math.pi) * yradius) end self:endPath()   if t.alpha then self:setAlpha(t.alpha) end if t.parent then t.parent:addChild(self) end   return self end     ---------------------------------------- -- DRAW ELLIPSE ---------------------------------------- local radiusY = 300 -- y local radiusX = 74 -- x Arc.new{x=_W/2+2*radiusX,y=_H/2+radiusY,xradius=radiusX, yradius=radiusY, sides=sides, fillStyle = { Shape.SOLID, rgb(200, 200, 200), 0.3 }, lineStyle = { 0, rgb(200, 200, 200), 0.3 }, parent = stage}       ---------------------------------------- -- CLASS DRAW SEGMENT ---------------------------------------- Segment = Core.class(Shape)   function Segment:init(config) -- Settings to control the line self.conf = { Width = 1.5, Color = rgb(255, 255, 255), Alpha = 1, }   if config then --copying configuration for key,value in pairs(config) do self.conf[key]= value end end   self:setVisible(false) end   -- Draw line function Segment:draw(dots) self:beginPath() self:setLineStyle(self.conf.Width, self.conf.Color, self.conf.Alpha) self:moveTo(dots.x,dots.y) self:lineTo(dots.x,dots.y) self:endPath() self:setVisible(true) end   -- hide line function Segment:hide() self:clear() self:setVisible(false) end     ---------------------------------------- -- DRAW NEEDLE ---------------------------------------- local needle = Segment.new() stage:addChild(needle) needle:draw({x={_W/2+2*radiusX, _W/2+2*radiusX},y={_H/2+radiusY, _H/2}})     ---------------------------------------- -- FRAME CLOCK CONFIG ---------------------------------------- local cos = math.cos local sin = math.sin local rad = math.rad countFPS = 0 -- 60 ~= 1 sec theta = 270 -- Reference of axes in mobile is different   stage:addEventListener(Event.ENTER_FRAME, function() countFPS = countFPS + 1 if countFPS == 10 then -- change 10 if you need more or less velocity needle:hide() theta = theta + 1   needle:draw({ x={_W/2+2*radiusX, _W/2+2*radiusX+radiusX*cos(rad(theta))}, y={_H/2+radiusY, _H/2+radiusY+radiusY*sin(rad(theta))} }) countFPS = 0 end   end)```

Bye >-
• Hey, thanks a ton for that but what I am really stuck at is detecting collision of needle with a character that is translating around an ellipse all the time, and I am totally stuck at it