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

  • 大小: 4KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-28
  • 語言: C/C++
  • 標簽: Bezier??

資源簡介

通過多個三維控制點 實現生成Bezier樣條曲線 并通過輸入值(按照百分比 輸入0-100即可) 得到曲線上的三維坐標。

資源截圖

代碼片段和文件信息

/*
20171130?通過多個三維控制點?實現生成樣條曲線?并通過輸入值(按照百分比?輸入0-100即可)?得到曲線上的三維坐標
*/

#include??
#include?
#include?

typedef?struct
{
float?x;
float?y;
float?z;
}?POINT3D;

/*
myOutXYZ()
第一個參數為輸入的KeyPoints
第二個參數為輸入點的數量
第三個參數為輸入要想找到的樣條曲線上點的位置(0?-?100)
第四個參數為輸出的點的三維坐標
第五個參數為輸入生成的樣條曲線由多少個點構成?缺省默認為10000個
*/
void?myOutXYZ(float?*_InputAllDataPointer?int?_NumOfKeyPoint?float?_Input_Proportion/*百分比*/?float?*?&_OutputXYZ?int?_NumOfLinePts?=?10000);

void?myOutVec(std::vector?&_InputPoints?int?_NumOfKeyPoint?float?_Proportion?POINT3D?&_Output3DPt?int?_NumOfLinePts);

//貝塞爾曲線
void?drawCurve(int?_n?float?_t?std::vector?_InputKeyPoints?POINT3D?&_Pt3D?int?_line_pts_num);

int?main()?{

//??5?為?點的數量???3?為?三維
float?arr[5?*?3]?=?{?1?1?1
2?2?2
3?1?3
0?0?4
4?4?4};

float?*?result?=?new?float[3];

//
myOutXYZ(arr?5?30.0?result);

std::cout?< std::cout?< std::cout?<
delete[]?result;
result?=?NULL;
return?0;
}


void?myOutXYZ(float?*_InputAllDataPointer?int?_NumOfKeyPoint?float?_Input_Proportion?float?*?&_OutputXYZ?int?_NumOfLinePts)?{

std::vector?InputPoints;

POINT3D?tempMyPt3D;

for?(int?i?=?0;?i?
tempMyPt3D.x?=?_InputAllDataPointer[i++];
tempMyPt3D.y?=?_InputAllDataPointer[i++];
tempMyPt3D.z?=?_InputAllDataPointer[i++];

InputPoints.push_back(tempMyPt3D);
}

int?g_pts_nums?=?InputPoints.size();?

POINT3D?OUTPUT_3DPT;

myOutVec(InputPoints?g_pts_nums?_Input_Proportion?OUTPUT_3DPT?_NumOfLinePts);

_OutputXYZ[0]?=?OUTPUT_3DPT.x;
_OutputXYZ[1]?=?OUTPUT_3DPT.y;
_OutputXYZ[2]?=?OUTPUT_3DPT.z;
}

void?myOutVec(std::vector?&_InputPoints?int?_NumOfKeyPoint?float?_Proportion?POINT3D?&_Output3DPt?int?_NumOfLinePts)
{
if?(_Proportion?>?100?&&?_Proportion? //?報錯?
return;
}
POINT3D?Start_3DPt;

POINT3D?End_3DPt;

float?Totallylength?=?0.0;

std::vector?OutputLinePoints;

if?(_NumOfKeyPoint?>=?3)?{
for?(int?i?=?0;?i?

評論

共有 條評論