# Needing help for camera rotation in 3D with rotateY

**URL:** <https://discourse.processing.org/t/needing-help-for-camera-rotation-in-3d-with-rotatey/26195>\
**Category:** Coding Questions\
**Created:** [December 13, 2020, 4:13pm UTC](https://discourse.processing.org/t/needing-help-for-camera-rotation-in-3d-with-rotatey/26195 "2020-12-13T16:13:50Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![SailorToei](https://avatars.discourse-cdn.com/v4/letter/s/898d66/32.png) [@SailorToei](https://discourse.processing.org/u/SailorToei)\
**Post date:** [December 13, 2020, 4:13pm UTC](https://discourse.processing.org/t/needing-help-for-camera-rotation-in-3d-with-rotatey/26195/1 "2020-12-13T16:13:50Z")

</div>

Hello, I already asked a question about turning the movement direction withmovingthe mouse in3D.  
It was successfully answered.  
However, now I want to turn the camera as well.  
\<  
void kamera()  
{  
camera(xCam,yCam,zCam,xPos,yPos,zPos,0,1,1);  
xCam=xPos;  
yCam=yPos;  
zCam=zPos+200;  
if(mousey\>0||mousey\<0)  
{

```
beginCamera();
camera(xCam,yCam,zCam,xPos,yPos,zPos,0,1,1);
rotateY(mousey);
endCamera();

}

if(cam>0)
{
  xCam=xPos;
  yCam=yPos;
  zCam=zPos+10;
}

```

}

> 

As you can see, I tried it with beginCamera(). “mousey” is a variable that is programmed in that way:  
\<  
if(mouseX\<650)  
{mousey=-(-mouseX+650)\*0.01;}  
if(mouseX\>650)  
{mousey=(mouseX-650)\*0.01;}

> 

Because of your help, I could already change the movement directions with mousey. Now I also want to change the camera, but it’s always moving wrong, it is moving, but it’s moving like the Y axis is a little bit moved away from the figur.

---

<div class="post-metadata">

**Author:** ![SailorToei](https://avatars.discourse-cdn.com/v4/letter/s/898d66/32.png) [@SailorToei](https://discourse.processing.org/u/SailorToei)\
**Post date:** [December 15, 2020, 3:20pm UTC](https://discourse.processing.org/t/needing-help-for-camera-rotation-in-3d-with-rotatey/26195/2 "2020-12-15T15:20:38Z")

</div>

Solved it!  
This is the code:  
The main programm ( you can find the camera instructions in the class programm, which comes after this):

```auto
Figur figur1;
void setup()
{
  size(1300,750,P3D);
  figur1=new Figur(650,375,0,0,0,0);
}
void draw()
{
  //println(mousey);
  background(#FFFFFF);
  lights();
}
void keyPressed()
{
  figur1.pressedkeys();
}
void keyReleased()
{
  figur1.releasedkeys();
}
void mouseMoved()
{
  figur1.movedmouse();
}

```

Here’s the figurClass:

```auto
float a1=0;
float b1=0;
float c1=0;
float mousey=0;
float cam=0;
float camdist=200;
class Figur
{
  float xPos;
  float yPos;
  float zPos;
  float xCam;
  float yCam;
  float zCam;
  Figur(float x,float y,float z,float v,float b,float n)
  {
    xPos=x;
    yPos=y;
    zPos=z;
    xCam=v;
    yCam=b;
    zCam=n;
  }
  void drawFigur()
  {
    pushMatrix();
    fill(#0000FF);
    translate(xPos,yPos,zPos);
    rotateY(mousey);
    sphere(20);
    popMatrix();
    pushMatrix();
    translate(xPos,yPos+50,zPos);
    rotateY(mousey);
    box(15,60,15);
    popMatrix();
  }
  void pressedkeys()
  {
    if(key=='w')
    {c1=-5;}
    if(key=='s')
    {c1=5;}
    if(key=='c')
    {cam=5;}
    if(key=='a')
    {b1=-5;}
    if(key=='d')
    {b1=5;}
  }
  void releasedkeys()
  {
    if(key=='w')
    {c1=0;}
    if(key=='s')
    {c1=0;}
    if(key=='c')
    {cam=0;}
    if(key=='a')
    {b1=0;}
    if(key=='d')
    {b1=0;}
  }
  void movedmouse()
  {
    if(mouseX<650)
    {mousey=-(-mouseX+650)*0.01;}
    if(mouseX>650)
    {mousey=(mouseX-650)*0.01;}
   
  }
  void moveFigur()
  {
    if(c1>0)
    { 
      xPos=sin(mousey)*c1+xPos;
      zPos=cos(mousey)*c1+zPos;
    }
    if(c1<0)
    { 
      xPos=sin(mousey)*c1+xPos;
      zPos=cos(mousey)*c1+zPos;
    }
    if(b1>0)
    {
      xPos=cos(mousey)*b1+xPos;
      zPos=sin(mousey)*b1+zPos;
    }
    if(b1<0)
    {
      xPos=cos(mousey)*b1+xPos;
      zPos=sin(mousey)*b1+zPos;
    }
  }
  void kamera()
  {
    translate(xPos,zPos);
    xCam=(cos(mousey)*camdist)+xPos;
    yCam=yPos;
    zCam=(sin(mousey)*camdist)+zPos;
    camera(xCam,yCam,zCam,xPos,yPos,zPos,0,1,0);
  if(cam>0)
    {
     camdist=10;
    }
    if(cam==0)
    {
      camdist=200;
    }
  }
}

```

I’m so happy! Thank you Chrisir! It was your coding solution that brought me to this idea! Thank you all so much. The movement is a little bit twisted at the moment, but the camera works how it should. That was my goal. Thank you all so much!!! 🤩
