Working Triangulization with Hole
This commit is contained in:
56
demo/scripts/test.gd
Normal file
56
demo/scripts/test.gd
Normal file
@@ -0,0 +1,56 @@
|
||||
extends Node
|
||||
|
||||
@onready var p1 = $Polygon2D
|
||||
@onready var p2 = $Polygon2D2
|
||||
|
||||
var lines = []
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
for l in lines:
|
||||
DebugDraw3D.draw_lines(l, Color.DARK_RED)
|
||||
|
||||
func chunk_array(arr: Array, chunk_size: int) -> Array:
|
||||
var result_chunks = []
|
||||
var i = 0
|
||||
while i < arr.size():
|
||||
var chunk = arr.slice(i, i + chunk_size)
|
||||
result_chunks.append(chunk)
|
||||
i += chunk_size
|
||||
return result_chunks
|
||||
|
||||
func _ready() -> void:
|
||||
var tri = Triangulization.new()
|
||||
|
||||
var p1_vectors = [Vector2(4, 0), Vector2(4, 4), Vector2(0, 4), Vector2(0, 0)]
|
||||
var p2_vectors = [Vector2(2, 1), Vector2(2, 2), Vector2(1, 2), Vector2(1, 1)]
|
||||
|
||||
p1.polygon = p1_vectors
|
||||
p2.polygon = p2_vectors
|
||||
|
||||
p2.color = Color(1, 0, 1)
|
||||
|
||||
var result = tri.triangulate_with_holes(p1, p2)
|
||||
|
||||
var packedVector2 = p1_vectors
|
||||
packedVector2.append_array(p2_vectors)
|
||||
|
||||
var triangles = chunk_array(result, 3)
|
||||
print(triangles)
|
||||
|
||||
print(packedVector2)
|
||||
|
||||
for t in triangles:
|
||||
var triangle_line = []
|
||||
for ti in range(len(t)):
|
||||
var rindex = t[ti]
|
||||
var rindexnext = t[(ti+1) % len(t)]
|
||||
var v1 = packedVector2[rindex]
|
||||
var v2 = packedVector2[rindexnext]
|
||||
var vector1 = Vector3(v1.x, v1.y, 0)
|
||||
var vector2 = Vector3(v2.x, v2.y, 0)
|
||||
|
||||
triangle_line.append(vector1)
|
||||
triangle_line.append(vector2)
|
||||
lines.append(triangle_line)
|
||||
|
||||
print(lines)
|
||||
1
demo/scripts/test.gd.uid
Normal file
1
demo/scripts/test.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dysaws7hlg4td
|
||||
Reference in New Issue
Block a user