从笛卡儿到极地

时间:2015-11-08 22:45:33

标签: c++ polar-coordinates

我使用左右音频通道创建Lissajous矢量示波器。左边是x,右边是y,两者都不超过1和-1值。这些坐标也以45度角移动,给我以下视图。

enter image description here

所以我做了一个非常简单的

// converting x and y value from (-1 - 1) to (0 - 1)
float x = LeftChannelValue/2 + 0.5
float y = RightChannelValue/2 + 0.5

// multiplying the width and height with X and Y to get a proper square
// width and height have to be the same value 
float new_X = x*(width*0.5)
float new_Y = y*(height*0.5)

// doing two dimensional rotating to 45 degrees so it's easier to read
float cosVal = cos(0.25*pi)
float sinVal = sin(0.25*pi)

float finalX = (((new_X*cosVal)-(new_Y *sinVal))) + (width*0.5) //adding to translate back to origin 
float finalY = ((new_X*sinVal) + (new_Y *cosVal)) 

这给了我那张照片的结果。

我如何绘制极坐标图,使其看起来不像一个正方形,看起来像一个圆圈? enter image description here 我试图获得这种观点,但我对这与左派和右派如何相关完全感到困惑。我使用https://en.wikipedia.org/wiki/Polar_coordinate_system作为参考。

1 个答案:

答案 0 :(得分:2)

我想出了我想要的东西。

我试图在极坐标图中绘制这些坐标。我一切都错了。

我最终意识到为了让我转换x,y坐标,我需要自己定义半径和角度应该在x,y图表中表示的内容。在我的例子中,我希望半径是x和y的最大绝对值

唯一的问题是试图弄清楚如何使用x和y值计算角度。

这就是我希望我的圈子工作的方式,

  1. x = y 时,角度 0
  2. x = 1& y = 0 ,然后角度 45
  3. x = 1& y = -1 ,然后角度 90
  4. x = 0& y = 1 ,然后角度 -45
  5. x = -1& y = 1 ,然后角度 -90
  6. 根据这些信息,您可以找出圆圈的其余坐标,直到 180 & - 180 度角。

    我必须使用条件(if else语句)来正确地找出给定x和y的正确角度。

    然后绘制极坐标图,只需使用cos和sin转换为x,y坐标。

    我喜欢编程,我对微积分不好。