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

  • 大小: 25KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-12
  • 語言: C/C++
  • 標簽: c++??ue4??封閉區域??

資源簡介

程序思路: ①:得到線段我們的線段集合S(本次項目鼠標點擊得到線段(p1,p2兩點)已經在ue4藍圖里面實現,這一步就不過多闡述) ②:移除孤立的線段(兩端的點都是孤立的); ③:拆分所有的線段(就是將所有的相交線線段拆分開,得到新的線段集合S) ④:移除一個端點孤立的線段(一個端點孤立的線段是不構成多邊形的) ⑤:找出所有的大區域線段集合M,M是線段集合的集合,二維數組;(這里的大區域指的是:以任意一條線為起點找到和它相交的其他線段,再找到和這些線段相交的其他線段,直到找不到相交線段,那么這些線段的集合就是一個大區域Mi。然后找完所有的大區域) ⑥:分別對每一個大區域進行封閉區域的提取。

資源截圖

代碼片段和文件信息

//?Fill?out?your?copyright?notice?in?the?Description?page?of?Project?Settings.

#include?“ProceduralMesh.h“
#include?“getcrossfield.h“


bool?Yellow_Crane_Tower::Be_equal_to(float?A?float?B)
{
if?(((A?-?B)??-0.1))
{
return?true;
}
else
{
return?false;
}
}

bool?Yellow_Crane_Tower::Be_equal_to(FVector?A?FVector?B)
{
if?(Be_equal_to(A.X?B.X)?&&?Be_equal_to(A.Y?B.Y)?&&?Be_equal_to(A.Z?B.Z))
{
return?true;
}
else
{
return?false;
}
}

bool?Yellow_Crane_Tower::isonline(FVector?P1?FVector?P2?FVector?Q)//判斷點是否在線上
{
if?(Be_equal_to(Q?P1)?||?Be_equal_to(Q?P2))
{
return?true;
}
if?(Be_equal_to((Q?-?P1).Size()?+?(Q?-?P2).Size()?(P1?-?P2).Size()))
{
return?true;
}
return?false;
}

bool?Yellow_Crane_Tower::doselinecross(Yellow_Crane_Tower::line?L1?Yellow_Crane_Tower::line?L2)//判斷線段是否相交
{
float?x1?=?L1.p1.X;
float?y1?=?L1.p1.Y;
float?x2?=?L1.p2.X;
float?y2?=?L1.p2.Y;
float?x3?=?L2.p1.X;
float?y3?=?L2.p1.Y;
float?x4?=?L2.p2.X;
float?y4?=?L2.p2.Y;
if?((Be_equal_to(L1.p1?L2.p1)?&&?Be_equal_to(L1.p2?L2.p2))?||?(Be_equal_to(L1.p1?L2.p2)?&&?Be_equal_to(L1.p2?L2.p1)))
{
return?false;
}
if?(Be_equal_to((x3?-?x4)?*?(y1?-?y2)?-?(x1?-?x2)?*?(y3?-?y4)?0.f)?||?Be_equal_to((y1?-?y2)?*?(x3?-?x4)?-?(x1?-?x2)?*?(y3?-?y4)?0.f))
{
if?(Be_equal_to(L1.p1?L2.p1)?||?Be_equal_to(L1.p1?L2.p2)?||?Be_equal_to(L1.p2?L2.p1)?||?Be_equal_to(L1.p2?L2.p2))
{
return?true;
}
else
{
return?false;
}
}
float?x?=?((x1?-?x2)?*?(x3?*?y4?-?x4?*?y3)?-?(x3?-?x4)?*?(x1?*?y2?-?x2?*?y1))?/?((x3?-?x4)?*?(y1?-?y2)?-?(x1?-?x2)?*?(y3?-?y4));
float?y?=?((y1?-?y2)?*?(x3?*?y4?-?x4?*?y3)?-?(x1?*?y2?-?x2?*?y1)?*?(y3?-?y4))?/?((y1?-?y2)?*?(x3?-?x4)?-?(x1?-?x2)?*?(y3?-?y4));
FVector?Q;
Q.X?=?x;
Q.Y?=?y;
Q.Z?=?L1.p1.Z;
if?(isonline(L1.p1?L1.p2?Q)?&&?isonline(L2.p1?L2.p2?Q))
{
return?true;
}
else
{
return?false;
}
}

FVector?Yellow_Crane_Tower::getcrosspoint(Yellow_Crane_Tower::line?L1?Yellow_Crane_Tower::line?L2)
{

float?x1?=?L1.p1.X;
float?y1?=?L1.p1.Y;
float?x2?=?L1.p2.X;
float?y2?=?L1.p2.Y;
float?x3?=?L2.p1.X;
float?y3?=?L2.p1.Y;
float?x4?=?L2.p2.X;
float?y4?=?L2.p2.Y;
FVector?Q;
Q.X?=?0;
Q.Y?=?0;
Q.Z?=?0;
if?(!doselinecross(L1?L2))
{
return?Q;
}
if?(Be_equal_to(L1.p1?L2.p1)?||?Be_equal_to(L1.p1?L2.p2))
{
return?L1.p1;
}
if?(Be_equal_to(L1.p2?L2.p1)?||?Be_equal_to(L1.p2?L2.p2))
{
return?L1.p2;
}
float?x?=?((x1?-?x2)?*?(x3?*?y4?-?x4?*?y3)?-?(x3?-?x4)?*?(x1?*?y2?-?x2?*?y1))?/?((x3?-?x4)?*?(y1?-?y2)?-?(x1?-?x2)?*?(y3?-?y4));
float?y?=?((y1?-?y2)?*?(x3?*?y4?-?x4?*?y3)?-?(x1?*?y2?-?x2?*?y1)?*?(y3?-?y4))?/?((y1?-?y2)?*?(x3?-?x4)?-?(x1?-?x2)?*?(y3?-?y4));
Q.X?=?x;
Q.Y?=?y;
Q.Z?=?L1.p1.Z;
if?(isonline(L1.p1?L1.p2?Q)?&&?isonline(L2.p1?L2.p2?Q))
{
return?Q;
}
else
{
?Q.X?=?0;
?Q.Y?=?0;
?Q.Z?=?0;
return?Q;
}
}

TArray<

評論

共有 條評論