繼續初步學習細分曲線曲面階段,先是細分曲線,首先接觸的是chaikin細分,其計算規則非常簡單,就是乙個割角過程,其最終收斂到2次b樣條曲線
索性我做了點為了以後工作方便的事情。改寫了一下之前的2次b樣條曲線
#include#include #include #include glfloat ctrlpoints[4][2] =
, , ,
};void mydisplay(void)
glcolor3f(0.0, 0.0, 1.0);
glbegin(gl_line_strip);
for (int i = 0; i < 4; i++)
glend();
glfloat ps1[11][2];
glfloat ps2[11][2];
glint i = 0;
for (double t = 0.0; t <= 1.0; t += 0.1)
glcolor3f(1.0, 1.0, 0.0);
glbegin(gl_line_strip);
for (int i = 0; i < 11; i++)
glend();
glbegin(gl_line_strip);
for (int i = 0; i < 11; i++)
glend();
glflush();
}int main(int argc, char *argv)
然後是現在的chaikin細分
#include#include #include #include #define n 4
glfloat ctrlpoints[4][2] =
, , ,
};void mydisplay(void)
glcolor3f(0.0, 0.0, 1.0);
glbegin(gl_line_strip);
for (int i = 0; i < 4; i++)
glend();
int n1 = n;//表示之前的頂點數
int n = 2 * (n - 2) + 2;//表示細分一次的頂點數
glfloat ps2[4][30][2];
for (int i = 0; i < 4; i++)
for (int i = 0; i < 3; i++)
if (i==0)
glcolor3f(1.0, 0.0, 1.0);
else
else glcolor3f(0.5, 0.8, 0.8);
} glbegin(gl_line_strip);
for (int w = 0; w < n; w++)
glend();
n1 = n;
n = 2 * (n - 2) + 2;
} glflush();
}int main(int argc, char *argv)
效果如下
附上和上次2次b樣條的對比
chaikin細分和2次b樣條
chaikin細分
2次b樣條
我這裡專門沒畫出來第乙個點和最後乙個點,為的就是看得出來和2次b樣條的對比,經過對比發現還是一樣的,之後進入曲面細分部分
網格細分 Loop細分演算法
網格細分有很多種方式,其中loop subdivision是一種三角網格細分方法 只能用在三角形面上 loop細分的基本思想就是把乙個三角形分成四個三角形,區分新頂點和老頂點分別進行位置的改變,最終讓模型表面變得更加光滑 對於loop細分其實就是兩步 先細分,再調整 非邊界更新策略 對於非邊界情況 ...
ROC曲線 PR曲線
在 的結果分析中,roc和pr曲線是經常用到的兩個有力的展示圖。1.roc曲線 roc曲線 receiver operating characteristic 是一種對於靈敏度進行描述的功能影象。roc曲線可以通過描述真陽性率 tpr 和假陽性率 fpr 來實現。由於是通過比較兩個操作特徵 tpr和...
客戶細分總結
隨著營銷方式的多變 客戶需求各異 營銷增長受阻等多方面影響,企業的營銷面臨前所未有的挑戰和機遇,精準化營銷似乎已成為很多公司的選擇,本文針對以下客戶細分 五大模組 進行總結 一 客戶細分的必要性 顧客是天生就存在很大差異的,同質化的營銷策略在不同的客戶面前起到的作用是不同,如果企業想最大化的實現可持...