2013-03-05 2 views
0

Bezier Curve psuedocode 구현시이 오류가 발생합니다. Qt의 C++에서 메소드 구현을 아래에 있습니다.BezPoints [i] [(j + 1)] '

void GLWidget::drawBezierCurve() { 
      int N_PTS = vertices.size(); 
      Point bezPoints[N_PTS][N_PTS]; 

      for (float u = 0.0; u <= 1.0; u += 0.01){ 
       for(int diag = N_PTS/2; diag >= 0;diag--){ 
        for(int i = 0; i <= diag; i++){ 
         int j = diag - i; 
         bezPoints[i][j] = (1.0 - u) * bezPoints[i][j+1] + u * bezPoints[i+1][j]; 
        } 
       } 
       theImage.setPixel(bezPoints[0][0], bezPoints[0][0], RGBValue(100,12,140), 255); 
      } 
} 
+5

포인트 클래스를 사용합니까? 분명히 연산자를 정의하지 않습니다 * (float) –

+0

Qt를 사용하고 있으므로 ['QPoint'] (http://qt-project.org/doc/qt-4.8/qpoint)를 사용할 수 있습니다. HTML)을 원한다면. – deepmax

+0

'Point '가 무엇인지 모르기 때문에 추측 할 수 있습니다. 어쩌면 그것은 basic_point 의 typedef이고, 함수 템플리트'template basic_point operator (T scale, basic_point vec)'이 있습니다. -'(1.0-u)'를'(1.0 fu)'를 사용하여 템플릿 인수 차감 작업을합니다. 하지만 아마도'Point '를 취하는'operator *'는 없을 것입니다. – sellibitze

답변

1

플로트에 Point 개체를 곱한 것처럼 보입니다. 당신은이 연산을위한 자신의 곱셈 방법을 정의 할 필요가 있거나 부동 소수점 수를 곱하는 Point 객체의 필드에 따라 * 연산자를 오버로드해야 할 가능성이 큽니다.

뭔가 같은 다음 floating_point_field 그렇지 않으면 당신이 더 많은 일을하고 시작해야합니다, 당신은 그것을 떠와 동일한 유형이어야합니다 증식 할 클래스의 멤버

float operator* (const float num, const Point& point) { 
    return num * point.floating_point_field; 
} 

곱셈을 정의하는 데 관여합니다.

또는, 당신은 단지 같은 코드에 게터를 사용할 수 위의 곱셈은 예에서와 같이 간단한 경우 : 도움이

u * bezPoints[i][j+1].get_floating_point_value() 

희망,

매트

+2

벡터 (점) 값으로 스칼라 (부동) 값을 곱하면 스칼라가 아닌 다른 벡터 값이 반환됩니다. – Weeble