91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 6.94MB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2023-11-01
  • 語言: 其他
  • 標簽: Bezier??

資源簡介

基于OPENGL制作的描點式Bezier曲線繪制,功能較為完善,有多種鍵盤回調功能,代碼簡單,有詳細注釋,適合初學者學習借鑒,在VS2013調試無誤

資源截圖

代碼片段和文件信息

#include“stdafx.h“
#include?
#include
#include

#define?XVALUE?800//視口大小
#define?YVALUE?600
#define?ZVALUE?200

#define?MAX_CPTX?50?//最大控制點數

#define?float_x(x)?((float)x)/XVALUE
#define?float_y(y)?(float(W_height?-?1?-?y))/YVALUE

int?W_width?=?XVALUE?W_height?=?YVALUE;

int?Ctrl_P_Num?=?0;//實際控制點數
int?type?=?GL_LINE_STRIP?v;
int?rubberbanding?antialiasing;//彈性的、消除走樣標志位

typedef?struct
{
GLfloat?x?y;
}?POINT;
POINT?Control_Local[MAX_CPTX];//存儲控制點坐標

void?bezier()?//德卡斯特里奧算法
{
float?Approach_x[1000];
float?Approach_y[1000];
GLfloat?Path_Point[1000][2];

int?k?=?0;
for?(double?t?=?0.0;?t?<=?1;?t?+=?0.001)
{
for?(int?i?=?1;?i? {
for?(int?j?=?0;?j? {
if?(i?==?1)?//?i==1時第一次迭代由已知控制點計算????
{
Approach_x[j]?=?Control_Local[j].x?*?(1?-?t)?+?Control_Local[j?+?1].x?*?t;
Approach_y[j]?=?Control_Local[j].y?*?(1?-?t)?+?Control_Local[j?+?1].y?*?t;
continue;
}
//?i?!=?1時通過上一次迭代的結果計算????
Approach_x[j]?=?Approach_x[j]?*?(1?-?t)?+?Approach_x[j?+?1]?*?t;
Approach_y[j]?=?Approach_y[j]?*?(1?-?t)?+?Approach_y[j?+?1]?*?t;
}

}
Path_Point[k][0]?=?Approach_x[0];
Path_Point[k][1]?=?Approach_y[0];
k++;
}

glColor3f(1.0?1.0?0.0);
glBegin(GL_LINE_STRIP);
for?(int?i?=?0;?i? {
glVertex2fv(Path_Point[i]);
}
glEnd();
}

void?SetupRc(void)//初始化繪制環境
{
glClearColor(0.0f?0.0f?0.0f?0.0f);//用于清除的顏色
glClear(GL_COLOR_BUFFER_BIT);//清除顏色緩沖以及深度緩沖


glMatrixMode(GL_PROJECTION);//指定當前矩陣對投影矩陣應用隨后的矩陣操作.
glLoadIdentity();//對當前矩陣進行初始化
gluOrtho2D(0?XVALUE?0?YVALUE);

glBlendFunc(GL_SRC_ALPHA?GL_ONE_MINUS_SRC_ALPHA);//指定紅綠藍和?alpha?目標混合因子?源混合因子如何計算

}

void?RenderScene(void)//渲染
{
int?i;

glClear(GL_COLOR_BUFFER_BIT);
glPointSize(5.0);
if?(Ctrl_P_Num?==?1?&&?(type?==?GL_LINE_STRIP?||?type?==?GL_LINE_LOOP))
{
glBegin(GL_POINTS);//點模式,把每一個頂點作為一個點進行處理
glVertex2f(Control_Local[0].x?Control_Local[0].y);//
glEnd();
}
glLineWidth(5.0f);//指定線的寬度

glBegin(type);
glColor3f(0.0?0.0?1.0);
for?(i?=?0;?i? {
glVertex2f(Control_Local[i].x?Control_Local[i].y);
}
glEnd();

if?(Ctrl_P_Num?>=?3)//出現兩條邊后開始繪制Bezier曲線
{
bezier();
}
glutSwapBuffers();//雙緩沖區圖形繪制
}

void?Reshape(int?width?int?height)
{

float?w_aspect?=?((float)XVALUE)?/?YVALUE?aspect?=?((float)width)?/?height;


if?(aspect?<=?w_aspect)//視口保持w_aspect的縱橫比
glViewport(0?(height?-?width?/?w_aspect)?/?2?width?width?/?w_aspect);
else
glViewport((width?-?height*w_aspect)?/?2?0?height*w_aspect?height);

//透視視窗轉換
glMatrixMode(GL_PROJECTION);//指定當前矩陣對投影矩陣應用隨后的矩陣操作.
glLoadIdentity();//對當前矩陣進行初始化?
gluOrtho2D(0?1?0?1);
}

void?Keyboard(unsigned?char?key?int?x?int?y)//普通鍵盤回調
{
switch?(key)
{
case?‘a‘://消除鋸齒,使線段平滑
{
antialiasing?=?!antialiasing;//消除走樣標志位
if?(antialias

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????6584??2017-04-04?22:54??Bezier_experiment\Bezier_experiment\Bezier_experiment.cpp

?????文件???????4553??2017-04-02?09:43??Bezier_experiment\Bezier_experiment\Bezier_experiment.vcxproj

?????文件???????1324??2017-04-02?09:43??Bezier_experiment\Bezier_experiment\Bezier_experiment.vcxproj.filters

?????文件????????174??2017-04-04?22:54??Bezier_experiment\Bezier_experiment\Debug\Bezier_e.BE11A5C9.tlog\Bezier_experiment.lastbuildstate

?????文件???????1662??2017-04-04?22:54??Bezier_experiment\Bezier_experiment\Debug\Bezier_e.BE11A5C9.tlog\cl.command.1.tlog

?????文件???????4262??2017-04-04?22:54??Bezier_experiment\Bezier_experiment\Debug\Bezier_e.BE11A5C9.tlog\CL.read.1.tlog

?????文件???????1426??2017-04-04?22:54??Bezier_experiment\Bezier_experiment\Debug\Bezier_e.BE11A5C9.tlog\CL.write.1.tlog

?????文件???????1502??2017-04-04?22:54??Bezier_experiment\Bezier_experiment\Debug\Bezier_e.BE11A5C9.tlog\link.command.1.tlog

?????文件???????3404??2017-04-04?22:54??Bezier_experiment\Bezier_experiment\Debug\Bezier_e.BE11A5C9.tlog\link.read.1.tlog

?????文件????????752??2017-04-04?22:54??Bezier_experiment\Bezier_experiment\Debug\Bezier_e.BE11A5C9.tlog\link.write.1.tlog

?????文件???????1628??2017-04-04?22:54??Bezier_experiment\Bezier_experiment\Debug\Bezier_experiment.log

?????文件??????22741??2017-04-04?22:54??Bezier_experiment\Bezier_experiment\Debug\Bezier_experiment.obj

?????文件????1703936??2017-04-02?09:43??Bezier_experiment\Bezier_experiment\Debug\Bezier_experiment.pch

?????文件??????11741??2017-04-02?09:43??Bezier_experiment\Bezier_experiment\Debug\stdafx.obj

?????文件??????84992??2017-04-04?22:54??Bezier_experiment\Bezier_experiment\Debug\vc120.idb

?????文件?????151552??2017-04-04?22:54??Bezier_experiment\Bezier_experiment\Debug\vc120.pdb

?????文件???????1580??2017-04-02?09:43??Bezier_experiment\Bezier_experiment\ReadMe.txt

?????文件????????223??2017-04-02?09:43??Bezier_experiment\Bezier_experiment\stdafx.cpp

?????文件????????234??2017-04-02?09:43??Bezier_experiment\Bezier_experiment\stdafx.h

?????文件????????236??2017-04-02?09:43??Bezier_experiment\Bezier_experiment\targetver.h

?????文件???30212096??2017-05-13?21:54??Bezier_experiment\Bezier_experiment.sdf

?????文件????????997??2017-04-02?09:43??Bezier_experiment\Bezier_experiment.sln

????..A..H.?????19968??2017-05-13?21:54??Bezier_experiment\Bezier_experiment.v12.suo

?????文件??????41984??2017-04-04?22:54??Bezier_experiment\Debug\Bezier_experiment.exe

?????文件?????470584??2017-04-04?22:54??Bezier_experiment\Debug\Bezier_experiment.ilk

?????文件?????741376??2017-04-04?22:54??Bezier_experiment\Debug\Bezier_experiment.pdb

?????文件????3080192??2017-04-02?09:43??Bezier_experiment\ipch\bezier_experiment-e39e0123\bezier_experiment-128d144d.ipch

?????目錄??????????0??2017-04-04?22:54??Bezier_experiment\Bezier_experiment\Debug\Bezier_e.BE11A5C9.tlog

?????目錄??????????0??2017-04-04?22:54??Bezier_experiment\Bezier_experiment\Debug

?????目錄??????????0??2017-04-02?09:43??Bezier_experiment\ipch\bezier_experiment-e39e0123

............此處省略7個文件信息

評論

共有 條評論