Skip to content
Snippets Groups Projects
Commit 286de5a7 authored by Tobias Rempe's avatar Tobias Rempe :telescope:
Browse files

De-Recursified

parent 728284b6
No related branches found
No related tags found
No related merge requests found
......@@ -163,8 +163,15 @@ var objects = [
)
];
var trace_corner_travel = false;
var draw_vertex_edges = true;
function trace_current_points(point_1, point_2) {
canvas.fillRect(point_1[0], point_1[1], 2, 2);
canvas.fillRect(point_2[0], point_2[1], 2, 2);
}
# This function draws line from "camer" to the point in 3D space behind the screen and determines the point where this line hits "screen"
function get_projected_values(vertex, focal_length, scale_factor, display_adjustment) {
......@@ -203,34 +210,36 @@ function rotate_projection(axis, vertex, angle) {
}
# Whole frame render assembly
function render_frame(focal_length, scale_factor, axis, angle, display_adjustment, object, i , size) {
if(i > size) then return;
var edges = object.get_edges()[i];
var rotated_vertex_1 = object.get_vertex()[edges[0]];
var rotated_vertex_2 = object.get_vertex()[edges[1]];
for var j in 0:axis.size() do { # This runs multiple iterations of simple 2D-Rotation to rotate on mult. axis
rotated_vertex_1 = rotate_projection(axis[j], rotated_vertex_1, angle);
rotated_vertex_2 = rotate_projection(axis[j], rotated_vertex_2, angle);
}
function render_frame(focal_length, scale_factor, axis, angle, display_adjustment, object) {
for var i in 0:object.get_edges().size() do {
var edges = object.get_edges()[i];
var rotated_vertex_1 = object.get_vertex()[edges[0]];
var rotated_vertex_2 = object.get_vertex()[edges[1]];
for var j in 0:axis.size() do { # This runs multiple iterations of simple 2D-Rotation to rotate on mult. axis
rotated_vertex_1 = rotate_projection(axis[j], rotated_vertex_1, angle);
rotated_vertex_2 = rotate_projection(axis[j], rotated_vertex_2, angle);
}
var point_1 = get_projected_values(rotated_vertex_1, focal_length, scale_factor, display_adjustment);
var point_2 = get_projected_values(rotated_vertex_2, focal_length, scale_factor, display_adjustment);
var point_1 = get_projected_values(rotated_vertex_1, focal_length, scale_factor, display_adjustment);
var point_2 = get_projected_values(rotated_vertex_2, focal_length, scale_factor, display_adjustment);
if trace_corner_travel then trace_current_points(point_1, point_2);
lines_to_draw.push([point_1, point_2]);
render_frame(focal_length, scale_factor, axis, angle, display_adjustment, object, i + 1, size);
if not draw_vertex_edges then continue;
lines_to_draw.push([point_1, point_2]);
}
}
function draw_calculated_vertices(i, size) {
if i > size then return;
canvas.line(lines_to_draw[i][0][0], lines_to_draw[i][0][1], lines_to_draw[i][1][0], lines_to_draw[i][1][1]);
draw_calculated_vertices(i + 1, size);
function draw_calculated_vertices() {
for var i in 0:lines_to_draw.size() do {
var line_tuple = lines_to_draw[i];
canvas.line(line_tuple[0][0], line_tuple[0][1], line_tuple[1][0], line_tuple[1][1]);
}
}
function prepare_screen() {
......@@ -252,34 +261,20 @@ var rotation_axis = [0, 1, 2]; # 0 = X, 1 = Y, 2 = Z
prepare_screen();
canvas.setLineColor(1, 1, 1);
function rotate_houses(angle) {
for var angle in 0:10000 do {
var adjusted_angle = angle * 0.01; #T-Script, for some reason, just deals with angles > 360° so I'm not gonna care about this
var local_angle = angle * -0.01;
render_frame(focal_length, scale_factor, rotation_axis, adjusted_angle, display_adjustment, objects[0]);
render_frame(focal_length, scale_factor, rotation_axis, local_angle, display_adjustment, objects[1]);
render_frame(focal_length, scale_factor, rotation_axis, adjusted_angle, display_adjustment, objects[2]);
render_frame(focal_length, scale_factor, rotation_axis, local_angle, display_adjustment, objects[3]);
draw_calculated_vertices();
canvas.setLineColor(0, 0, 0);
canvas.setLineWidth(6);
#canvas.setFillColor(0, 0, 0);
#canvas.fillRect(0, 0, canvas.width(), canvas.height());
draw_calculated_vertices(0, lines_to_draw.size() -1);
canvas.setLineWidth(5);
wait(10);
draw_calculated_vertices();
canvas.setLineColor(1, 1, 1);
canvas.setLineWidth(1);
lines_to_draw = [];
var local_angle = angle * -0.01;
render_frame(focal_length, scale_factor, rotation_axis, adjusted_angle, display_adjustment, objects[0], 0, objects[0].get_edges().size() - 1);
render_frame(focal_length, scale_factor, rotation_axis, local_angle, display_adjustment, objects[1], 0 , objects[1].get_edges().size() - 1);
render_frame(focal_length, scale_factor, rotation_axis, adjusted_angle, display_adjustment, objects[2], 0, objects[2].get_edges().size() - 1);
render_frame(focal_length, scale_factor, rotation_axis, local_angle, display_adjustment, objects[3], 0, objects[3].get_edges().size() - 1);
draw_calculated_vertices(0, lines_to_draw.size() -1);
}
function loop(angle) {
wait(10);
rotate_houses(angle);
loop(angle + 1);
}
loop(0);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment