macos xcode編譯器
#include
#include
#include
#include
#include
using
namespace
std;
float wid = 400; //設定視窗的大小,約定視窗必須為正方形
float height = wid; //設定視窗的大小
int numbers = 20; //設定劃分的網格的個數
float t = wid/numbers; //模擬畫素下的單位1
/* 引數設定說明:
輸入直線的兩點a(x1,y1);b(x2,y2)
您應當確保引數範圍在-400~400.且為整數。
*支援不同斜率
*支援兩點位置顛倒
*/int x1 = -300,y1=-400,x2 =400,y2 = 100;
void draw_point(float x, float y,int k_kind,int d_kind);
float translater(int x);
void swap(int &a, int &b)
void bresenham(int x1, int y1,int x2, int y2)
int dx = abs(x2-x1), dy = abs(y2-y1);
if (y1 > y2)
if (dy > dx)
float d = (dy +dy -dx)*t; //令d為決策量(這裡利用d = dx*w*2避免浮點運算)
float x = x1+0.0,y = y1+0.0;
draw_point(translater(x),translater(y),k_kind,d_kind); //繪製下乙個點
while( x < x2)
else
x= x + t;
draw_point(translater(x),translater(y),k_kind,d_kind); //繪製下乙個點
}}float translater(int x)
void draw_point(float x , float y, int k_kind,int d_kind)else
if (k_kind ==1 &&d_kind==1)else
if (k_kind==1&&d_kind ==0)
glvertex3f(x,y,0.0);
glend();
glflush();
}void grid()
glcolor3f(1.0,0,0);
glbegin(gl_lines); //繪製座標系,便於觀察
glvertex2f(-1,0);
glvertex2f(1,0);
glvertex2f(0,-1);
glvertex2f(0,1);
glend();
glflush();
glbegin(gl_lines);
glcolor3f(1.0,0.0,0.0);
glvertex2f(translater(x1),translater(y1)); //定點座標範圍
glvertex2f(translater(x2),translater(y2));
glend();
glflush();
//重新整理緩衝,保證繪圖命令能被執行
bresenham(x1, y1,x2,y2);
}int main(int argc, char *argv)
opengl中點精靈的使用
本人的個人部落格首頁為 csdn部落格首頁為 現在假設在乙個opengl的場景中存在大量的點,在繪製中你可以使用glvertex3d函式,繪製出來後,如果點很小,你看到了是場景中大量的 點 如果用glpointsize使點變大,你看到的是場景中有大量的 方格 是的,opengl中的點,其實都是方格,...
OpenGL 利用中點演算法畫y kx b直線
本文直接用 0 k 1 來說明中點演算法畫直線。其他的斜率可直接按照此方法進行類推。1。設乙個函式為f x,y y kx b 若f x,y 0,那麼該點在這條直線的上方 若f x,y 0,那麼該點在這條直線上 若f x,y 0,那麼該點在這條直線下方 2。因為k的範圍是 0 k 1,那麼x平均每單位...
中點Bresenham畫圓
這裡不仔細講原理,只是把我寫的演算法發出來,跟大家分享下,如果有錯誤的話,還請大家告訴我,如果寫的不好,也請指出來,一起討論進步。演算法步驟 1 輸入圓的半徑r。2 計算初始值d 1 r,x 0 y r。3 繪製點 x,y 及其在八分圓中的另外7個對稱點。4 判斷d的符號,若d 0,則先將d更新為d...