diff options
| author | 2023-07-09 17:40:17 +0200 | |
|---|---|---|
| committer | 2023-07-09 17:40:17 +0200 | |
| commit | f977fc5a19ba8e315a2482ad8f99749422c2f83a (patch) | |
| tree | 516571c4feeeab4ee606918f82b2e377ce31f809 /Scripts/Road.gd | |
| parent | 6b6d02ead8b1f5b0f5cf44d0a88abe50769128ca (diff) | |
| download | 2023-f977fc5a19ba8e315a2482ad8f99749422c2f83a.tar.gz 2023-f977fc5a19ba8e315a2482ad8f99749422c2f83a.tar.bz2 2023-f977fc5a19ba8e315a2482ad8f99749422c2f83a.zip  | |
Revert "merge branch 'curve-smoothing'"
This reverts commit fd37d1030f79705fc7a2498bcd356ebc86462544, reversing
changes made to 12c65d9ed4447a60b26b952fdfc397f45be2ca72.
Diffstat (limited to '')
| -rw-r--r-- | Scripts/Road.gd | 82 | 
1 files changed, 0 insertions, 82 deletions
diff --git a/Scripts/Road.gd b/Scripts/Road.gd deleted file mode 100644 index 4b19c70..0000000 --- a/Scripts/Road.gd +++ /dev/null @@ -1,82 +0,0 @@ -extends Line2D - -var epsilon = 2 - -@onready var leftBorder = $LeftBorder -@onready var rightBorder = $RightBorder - -# Called when the node enters the scene tree for the first time. -func _ready(): -	pass # Replace with function body. - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): -	pass - -func simplify(): -	points = simplify_rec(points, epsilon) - -func simplify_rec(pointArray: PackedVector2Array, epsilon: float): -	var dmax = 0 -	var index = -1 -	if pointArray.size() < 3: -		return pointArray -	var end = pointArray.size() - 1 -	for i in range(1, end-1): -		var d = find_perpendicular_distance(pointArray[i], pointArray[0], pointArray[end]) -		if d > dmax: -			index = i -			dmax = d -	 -	if dmax > epsilon: -		var recResults1 = simplify_rec(pointArray.slice(0, index), epsilon) -		var recResults2 = simplify_rec(pointArray.slice(index, end), epsilon) -		recResults1.append_array(recResults2) -		return recResults1 -	else: -		return [pointArray[0], pointArray[end]] - -func find_perpendicular_distance(p: Vector2, p1: Vector2, p2: Vector2): -	var result -	var slope -	var intercept -	if p1.x == p2.x: -		result = p.x - p1.x -	else: -		slope = (p2.y - p1.y) / (p2.x - p1.x) -		intercept = p1.y - (slope * p1.x) -		result = abs(slope * p.x - p.y + intercept) / sqrt(pow(slope, 2) + 1) -	 -	return result - -func get_bisector(left_side: bool, p2: Vector2, p1: Vector2 = p2, p3: Vector2 = p2): -	var v1 = (p2 - p1).normalized() -	var v2 = (p2 - p3).normalized() -	var normal -	if v1 == -v2: -		normal = v2.rotated(-PI/2) -	else: -		normal = (v1 + v2).normalized() -		if v2.rotated(-PI/2).dot(v1) < 0: -			normal = -normal -	 -	if left_side: -		normal = -normal -	return normal - - -func draw_borders(): -	for pointIndex in range(0, points.size() - 1): -		var normal -		if pointIndex == 0: -			continue -		elif pointIndex == points.size() -1: -			continue -			#normal = Vector2.ZERO -		else: -			normal = get_bisector(true, points[pointIndex], points[pointIndex-1], points[pointIndex+1]) -		 -		var point = points[pointIndex] + (normal*50) -		leftBorder.add_point(point) -		point = points[pointIndex] - (normal*50) -		rightBorder.add_point(point)  | 
