2014-10-20 4 views
0

PID 필터를 사용하여 피드백 제어를 사용하는 Bresehham의 회선 알고리즘이 수정 된 경우 누구에게 알려 집니까? 기본적으로이 알고리즘은 오류 기간이 절반으로 증폭 된 P- 피드백 제어입니다. 나는 그래픽 보석 시리즈 보았다, Abrash의 책은, 등등은 그것이 여기에 어떤 아직Bresehham의 선 그리기 알고리즘 및 PID

+0

이 "PID 필터"가 무엇인지 또는 더 자세한 정보를 찾을 수있는 위치를 조금 넓힐 수 있습니까? 태그의 'pid'는 설명과 관련이없는 것 같습니다. – usr2564301

+0

나는 그것을 의심한다. Bresenham은 사소하고 완벽하게 이해 된 응답 동역학으로 "통제 된 개체"에 대한 매우 구체적인 오류 최소화 문제를 해결합니다. PID 제어기는 제어 대상이 응답을 잘 이해하지 못하는 전반적인 제어 문제를 해결합니다. – Gene

+0

@Jongware는 실제로 오타였습니다. –

답변

0

을 찾을 수 없습니다 : From Here합니다. 이 매개 변수는 P 매개 변수를 사용합니다 (링크 위쪽에 표시된 의사 코드의 단계 참조).

제공된 예제 코드는 이전 환경 (코드의 TurboC 참조)으로 작성되었으며 사용자가 작성해야하는 기능을 포함합니다. 예. initgraph(), putpixel() 등입니다. 그러나 알고리즘은 완료된 것처럼 보입니다.

#include <stdio.h> 
    #include <conio.h> 
    #include <graphics.h> 
    #include <math.h> 
    #include <dos.h> 

    int main() { 
     /* request auto detection */ 
     int gdriver = DETECT, gmode; 
     int x1 = 0, y1 = 0, x2, y2; 
     int err, x, y, dx, dy, dp, xEnd; 
     int twody, twodxdy; 

     /* initialize graphic driver */ 
     initgraph(&gdriver, &gmode, "C:/TURBOC3/BGI"); 
     err = graphresult(); 

     if (err != grOk) { 
       /* error occurred */ 
       printf("Graphics Error: %s\n", 
           grapherrormsg(err)); 
       return 0; 
     } 

     /* max position in x and y axis */ 
     x2 = getmaxx(); 
     y2 = getmaxy(); 

     /* draws line from (0, 0) to (x2, y2) */ 
     dx = x2 - x1; 
     dy = y2 - y1; 

     twody = 2 * dy; 
     twodxdy = 2 * (dy - dx); 

     dp = twody - dx; 

     if (x1 > x2) { 
       x = x2; 
       y = y2; 
       xEnd = x1; 
     } else { 
       x = x1; 
       y = y1; 
       xEnd = x2; 
     } 

     /* put a dot at the position (x, y) */ 
     putpixel(x, y, WHITE); 

     /* calculate x and y successor and plot the points */ 
     while (x < xEnd) { 
       x = x + 1; 
       if (dp < 0) { 
         dp = dp + twody; 
       } else { 
         y = y + 1; 
         dp = dp + twodxdy; 
       } 

       /* put a dot at the given position(x, y) */ 
       putpixel(x, y, WHITE); 

       /* sleep for 50 milliseconds */ 
       delay(50); 
     } 

     getch(); 

     /* deallocate memory allocated for graphic screen */ 
     closegraph(); 

     return 0; 
    } 
+0

OP의 "수정 된"알고리즘이 무엇인지 잘 모르겠지만 이것은 원래의 * 알고리즘 일뿐입니다. – usr2564301

+0

누가 알겠습니까? 나에게 심사 숙제 된 원본을 보여 주면이 문서와 비교해보고 알려줄 것입니다. :) – ryyker