선은 두 점을 연결합니다. 그래픽의 기본 요소입니다. 선을 그리려면 두 점이 필요하고 화면에서 이 두 점 사이에 선을 그립니다. 그래픽 측면에서 우리는 이 점을 픽셀이라고 부르며 각 픽셀은 정수 좌표와 연결됩니다. x1
세 가지 다른 알고리즘이 화면상에서 사용됩니다. 선 생성, 이것들은-
DDA Algorithm
Bresenham Line Generation
Midpoint Algorithm
중점 점선 알고리즘을 사용하여 선을 그리는 단계는-
현재 앵커 포인트를 사용하여 중간점을 계산합니다. 즉 동쪽(Xp+1, Yp)과 북동쪽(Xp+1, Yp) +1)이 중간점(Xp+1, Yp+1/2)입니다.
이제 중간점이 화면에서 다음 좌표의 위치를 결정합니다. 즉, p>
중간점이 선 위에 있으면 다음 좌표는 동쪽에 있게 됩니다.
중간점이 선 아래에 있으면 다음 좌표는 북동쪽이 됩니다.
다양한 입력 및 출력 시나리오를 살펴보겠습니다.
input− int x_1 = 3, int y_1 = 3, int x_2 = 10, int y_2 = 8
output
output
강하다 >− 선 생성 알고리즘의 중간점은 다음과 같습니다: 3,3 4,4 5,5 6,5 7,6 8,7 9,7 10,8Explanation− 우리가 제공하는 좌표는 x_1 = 3입니다. x_2 = 10, y_1 = 3, y_2 = 8. 따라서 단계에서는 먼저 dx = x_2 - x_1을 10 - 3 = 7로 계산하고 dy를 y_2 - y_1 8 - 3 = 5로 계산합니다. 그런 다음 dy가 dx보다 작은지 확인합니다. 이제 d를 5 - (7 / 2) = 2로 계산합니다. 첫 번째 점은 x_1과 y_1입니다. 인쇄하세요. 이제 x_1
입력: int x_1 = 2, int y_1 = 2, int x_2 = 3, int y_2 = 4
출력: 선분 생성 알고리즘으로 얻은 중간점은 2,2 3,3 3, 4
설명: 주어진 좌표는 x_1 = 2, x_2 = 2, y_1 = 3, y_2 = 4입니다. 중간점 세그먼트 생성 알고리즘을 적용하여 모든 중간점 픽셀을 출력으로 계산합니다.
입력 정수점은 int x_1, int y_1, int x_2, int y_2입니다. Mid_Point(x_1, y_1, x_2, y_2) 함수를 호출하여 선분을 생성합니다.
함수 Mid_Point(x_1, y_1, x_2, y_2) 내에서
dx를 x_2 - x_1로, dy를 y_2 - y_1
IF dy가 dx보다 작거나 같은지 확인한 다음 설정합니다. d를 dy - (dx/2)로 설정하고 first_pt를 x_1로 설정하고 second_pt를 y_1
first_pt 및 second_pt로 인쇄합니다.
first_pt가 x_2보다 작을 때 while 루프를 시작하고 first_pt를 1로 늘리고 d가 0보다 작은지 확인한 다음 d를 d + dy로 설정하고, 그렇지 않으면 d를 d + (dy - dx)로 설정하고 second_pt를 1씩 증가시킵니다. first_pt와 second_pt를 인쇄합니다.
그렇지 않고 dx가 dy보다 작으면 d를 dx - (dy/2)로 설정하고, first_pt를 x_1로 설정하고, second_pt를 y_1로 설정하고, first_pt와 second_pt를 인쇄합니다.
while 루프를 시작합니다. second_pt가 y_2보다 작으면 루프 내에서 second_pt를 증가시킵니다. second_pt는 1씩 증가합니다. d가 0보다 작은지 확인하고 d를 d + dx로 설정합니다. 그렇지 않으면 d를 d + (dx - dy)로 설정하고 first_pt를 1만큼 증가시킵니다.
first_pt와 second_pt를 인쇄하세요.
#include<bits/stdc++.h> using namespace std; void Mid_Point(int x_1, int y_1, int x_2, int y_2){ int dx = x_2 - x_1; int dy = y_2 - y_1; if(dy <= dx){ int d = dy - (dx / 2); int first_pt = x_1; int second_pt = y_1; cout<< first_pt << "," << second_pt << "\n"; while(first_pt < x_2){ first_pt++; if(d < 0){ d = d + dy; } else{ d = d + (dy - dx); second_pt++; } cout << first_pt << "," << second_pt << "\n"; } } else if(dx < dy){ int d = dx - (dy/2); int first_pt = x_1; int second_pt = y_1; cout << first_pt << "," << second_pt << "\n"; while(second_pt < y_2){ second_pt++; if(d < 0){ d = d + dx; } else{ d += (dx - dy); first_pt++; } cout << first_pt << "," << second_pt << "\n"; } } } int main(){ int x_1 = 3; int y_1 = 3; int x_2 = 10; int y_2 = 8; cout<<"Mid-Points through Line Generation Algorithm are: "; Mid_Point(x_1, y_1, x_2, y_2); return 0; }
위 코드를 실행하면 다음과 같은 출력이 생성됩니다
Mid-Points through Line Generation Algorithm are: 3,3 4,4 5,5 6,5 7,6 8,7 9,7 10,8
위 내용은 중간점 라인 생성 알고리즘의 C++ 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!