求线段的等分点
extends Node2Dvar pos:Vector2
var split_num:int
var p1 = Vector2(200,200)
var p2 = Vector2(100,100)func _input(event: InputEvent) -> void:if event is InputEventMouseButton:if event.button_index == MOUSE_BUTTON_WHEEL_DOWN:split_num = clamp(split_num-1,0,10)if event.button_index == MOUSE_BUTTON_WHEEL_UP:split_num = clamp(split_num+1,0,10)queue_redraw()func _draw() -> void:myCanvas.draw_vector(self,p1,p2)var points = line_splits(p1,p2,split_num)for p in points:myCanvas.draw_point(self,p)pass# 返回线段的等分点(不包含起始和终止点)
func line_splits(p1:Vector2,p2:Vector2,num:int=2) ->PackedVector2Array:var arr:PackedVector2Arrayfor i in range(1,num):arr.append(p1.lerp(p2,float(i)/float(num)))return arr
求反向平行线段之间的对角线
extends Node2Dvar pos:Vector2
var split_num:intfunc _input(event: InputEvent) -> void:if event is InputEventMouseButton:if event.button_index == MOUSE_BUTTON_WHEEL_DOWN:split_num = clamp(split_num-1,0,10)if event.button_index == MOUSE_BUTTON_WHEEL_UP:split_num = clamp(split_num+1,0,10)queue_redraw()func _draw() -> void:var p1 = Vector2(200,200)var p2 = Vector2(200,400)var p3 = Vector2(500,200)var p4 = Vector2(500,400)myCanvas.draw_vector(self,p1,p2)myCanvas.draw_vector(self,p4,p3)var points = line_lerps(p1,p2,10)var points2 = line_lerps(p4,p3,10)for i in range(points.size()):myCanvas.draw_vector(self,points[i],points2[i])# 返回线段的等分点(包含起始和终止点)
func line_lerps(p1:Vector2,p2:Vector2,num:int=2) ->PackedVector2Array:var arr:PackedVector2Arrayfor i in range(0,num+1):arr.append(p1.lerp(p2,float(i)/float(num)))return arr
extends Node2Dvar pos:Vector2
var split_num:intfunc _input(event: InputEvent) -> void:if event is InputEventMouseMotion:pos = event.positionqueue_redraw()func _draw() -> void:var p1 = Vector2(100,200)var p2 = Vector2(200,500)var p3 = Vector2(100,100)var p4 = posmyCanvas.draw_vector(self,p1,p2)myCanvas.draw_vector(self,p3,p4)var points = line_lerps(p1,p2,10)var points2 = line_lerps(p3,p4,10)for i in range(points.size()):myCanvas.draw_vector(self,points[i],points2[i])var points3 = line_lerps(p2,p4,10)var points4 = line_lerps(p1,p3,10)for i in range(points3.size()):myCanvas.draw_vector(self,points3[i],points4[i])pass# 返回线段的等分点(不包含起始和终止点)
func line_splits(p1:Vector2,p2:Vector2,num:int=2) ->PackedVector2Array:var arr:PackedVector2Arrayfor i in range(1,num):arr.append(p1.lerp(p2,float(i)/float(num)))return arr# 返回线段的等分点(包含起始和终止点)
func line_lerps(p1:Vector2,p2:Vector2,num:int=2) ->PackedVector2Array:var arr:PackedVector2Arrayfor i in range(0,num+1):arr.append(p1.lerp(p2,float(i)/float(num)))return arr