C++のコンピュータグラフィックスにおけるポイントクリッピングアルゴリズム
コンピュータグラフィックスは、コンピュータ画面に画像やグラフィックスを描画することを扱います。ここでは、画面を2次元座標系として扱います。この座標系は左上(0,0)から始まり、右下で終わります。
表示平面 コンピュータグラフィックスでグラフィックスを描画するために定義された領域です。または画面の表示領域。
クリッピングとは、表示面の外側にあるポイントまたはグラフィックを削除することです。
クリッピングを理解するために例を見てみましょう。
ここで、ポイントCとDは、青色でマークされた表示平面の外側にあるため、クリップされます。
コンピュータグラフィックスのポイントをクリップするため。表示場所の座標、つまり(X min )を知る必要があります 、Y min )および(Xmax、Ymax)。次に、ポイントの座標をこれらの座標と比較します。
If(X min 、Y min )<=(Xpoint、Y point)<=(X max 、Y max )、ポイントは表示平面の内側にあります。そうでない場合、ポイントは切り取られます。
例
ポイントクリッピングを説明するプログラム
#include <iostream>
using namespace std;
void pointClipping(int points[][2], int n, int Xmin, int Ymin, int Xmax, int Ymax) {
cout<<"Points that are removed by Point clipping Algorithm are :"<<endl;
for (int i = 0; i < n; i++){
if ((points[i][0] < Xmin) || (points[i][0] > Xmax))
cout<<"("<<points[i][0]<<","<<points[i][1]<<")\t";
else if ((points[i][1] < Ymin) || (points[i][1] > Ymax))
cout<<"("<<points[i][0]<<","<<points[i][1]<<")\t";
}
}
int main() {
int points[6][2] = {{0, 0}, {-10, 10}, {1000, 1000}, {100, 900}, {501, 311}, {250, 250}};
int Xmin = 0;
int Xmax = 500;
int Ymin = 0;
int Ymax = 500;
pointClipping(points, 6, Xmin, Ymin, Xmax, Ymax);
return 0;
} 出力
Points that are removed by Point clipping Algorithm are : (-10,10) (1000,1000) (100,900) (501,311)
-
最近傍アルゴリズムを実装するためのC++プログラム
これは、巡回セールスマン問題を実装するために使用される最近傍アルゴリズムを実装するC ++プログラムであり、エッジを1回だけ通過することで、すべてのノードにアクセスするために必要な最小コストを計算します。 必要な関数と擬似コード アルゴリズム Begin Initialize c = 0, cost = 1000; Initialize g[][]. function swap() is used to swap two values x and y. function cal_sum()
-
拡張ユークリッドアルゴリズムを実装するためのC++プログラム
拡張ユークリッドアルゴリズムは、2つの数値のGCDを計算するもう1つの方法です。 ax + by =gcd(a、b)を計算するための追加の変数があります。コンピュータプログラムで使用する方が効率的です アルゴリズム Begin Declare variable a, b, x and y gcdExtended(int a, int b, int *x, int *y) if (a == 0) *x = 0; *y = 1; return b; Take two variables to store the result Update