Skip to content

Commit 5f6cf70

Browse files
committed
Matematika s bugovima
1 parent 12356cc commit 5f6cf70

File tree

2 files changed

+204
-0
lines changed

2 files changed

+204
-0
lines changed

matematikascript.js

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
var start = 0;
2+
var points = [];
3+
var lengths = [];
4+
var vectorAngles = [];
5+
var angles = [];
6+
var vectors = [];
7+
8+
function calculateLength(pointA, pointB) {
9+
var xdistance = pointB[0] - pointA[0];
10+
var ydistance = pointB[1] - pointA[1];
11+
var length = Math.sqrt(xdistance ** 2 + ydistance ** 2);
12+
return length;
13+
}
14+
15+
function calculateLengths(point_s) {
16+
for (var i = 0; i < point_s.length - 1; i++) {
17+
lengths.push(
18+
calculateLength(point_s[i].coordinates, point_s[i + 1].coordinates)
19+
);
20+
}
21+
}
22+
23+
function vectorize(points) {
24+
for (var i = 0; i < points.length - 1; i++) {
25+
vectors.push([
26+
points[i + 1].coordinates[0] - points[i].coordinates[0],
27+
points[i + 1].coordinates[1] - points[i].coordinates[1]
28+
]);
29+
}
30+
}
31+
32+
function calculateInitialAngle(firstPoint, secondPoint) {
33+
var vec = [secondPoint[0] - firstPoint[0], secondPoint[1] - firstPoint[1]];
34+
if (document.getElementById("startValue").value == "right") {
35+
start =
36+
Math.PI / 2 - Math.acos(vec[0] / Math.sqrt(vec[0] ** 2 + vec[1] ** 2));
37+
} else {
38+
start =
39+
Math.acos(vec[0] / Math.sqrt(vec[0] ** 2 + vec[1] ** 2)) - Math.PI / 2;
40+
}
41+
}
42+
43+
function calculateAngles(vectors) {
44+
for (var i = 0; i < vectors.length - 1; i++) {
45+
const angle = calculateAngle(vectors[i], vectors[i + 1], i);
46+
vectorAngles.push(angle);
47+
}
48+
}
49+
50+
function calculateAngle(vectorA, vectorB, pointNumber) {
51+
console.log(pointNumber);
52+
if (points[pointNumber].direction === points[pointNumber + 1].direction) {
53+
if (vectorA[1] < 0) {
54+
vectorAngle1 =
55+
2 * Math.PI -
56+
Math.acos(vectorA[0] / Math.sqrt(vectorA[0] ** 2 + vectorA[1] ** 2));
57+
} else {
58+
vectorAngle1 = Math.acos(
59+
vectorA[0] / Math.sqrt(vectorA[0] ** 2 + vectorA[1] ** 2)
60+
);
61+
}
62+
if (vectorB[1] < 0) {
63+
vectorAngle2 =
64+
2 * Math.PI -
65+
Math.acos(vectorB[0] / Math.sqrt(vectorB[0] ** 2 + vectorB[1] ** 2));
66+
} else {
67+
vectorAngle2 = Math.acos(
68+
vectorB[0] / Math.sqrt(vectorB[0] ** 2 + vectorB[1] ** 2)
69+
);
70+
}
71+
var finalAngle = vectorAngle2 - vectorAngle1;
72+
if (Math.abs(finalAngle) > Math.PI) {
73+
if (finalAngle > 0) {
74+
finalAngle -= 2 * Math.PI;
75+
} else {
76+
finalAngle += 2 * Math.PI;
77+
}
78+
}
79+
angles.push(finalAngle);
80+
return finalAngle;
81+
} else {
82+
vectorB[0] = -vectorB[0];
83+
vectorB[1] = -vectorB[1];
84+
if (vectorA[1] < 0) {
85+
vectorAngle1 =
86+
2 * Math.PI -
87+
Math.acos(vectorA[0] / Math.sqrt(vectorA[0] ** 2 + vectorA[1] ** 2));
88+
} else {
89+
vectorAngle1 = Math.acos(
90+
vectorA[0] / Math.sqrt(vectorA[0] ** 2 + vectorA[1] ** 2)
91+
);
92+
}
93+
if (vectorB[1] < 0) {
94+
vectorAngle2 =
95+
2 * Math.PI -
96+
Math.acos(vectorB[0] / Math.sqrt(vectorB[0] ** 2 + vectorB[1] ** 2));
97+
} else {
98+
vectorAngle2 = Math.acos(
99+
vectorB[0] / Math.sqrt(vectorB[0] ** 2 + vectorB[1] ** 2)
100+
);
101+
}
102+
var finalAngle = vectorAngle2 - vectorAngle1;
103+
if (Math.abs(finalAngle) > Math.PI) {
104+
if (finalAngle > 0) {
105+
finalAngle -= 2 * Math.PI;
106+
} else {
107+
finalAngle += 2 * Math.PI;
108+
}
109+
}
110+
angles.push(finalAngle);
111+
return finalAngle;
112+
}
113+
}
114+
115+
function generateLists(points, vectors) {
116+
calculateLengths(points);
117+
vectorize(points);
118+
calculateAngles(vectors);
119+
}
120+
121+
var points = [
122+
{ coordinates: [0, 0], direction: "forwards" },
123+
{ coordinates: [2, 2], direction: "forwards" },
124+
{ coordinates: [2, 1], direction: "backwards" }
125+
];
126+
generateLists();
127+
console.log(lenghts, angles);
128+
129+
/*function onSubmit(event) {
130+
event.preventDefault();
131+
j += 1;
132+
133+
x = document.getElementById("x1").value;
134+
y = document.getElementById("y1").value;
135+
136+
document.getElementById("x1").value = "";
137+
document.getElementById("y1").value = "";
138+
139+
points.push({
140+
coordinates: [x, y],
141+
direction: document.getElementById("direction").value
142+
});
143+
144+
generateLists(points, vectors);
145+
146+
if (j == 2) {
147+
calculateInitialAngle(points[0].coordinates, points[1].coordinates);
148+
var node1 = document.createElement("li");
149+
var textnode1 = document.createTextNode((start / Math.PI) * 180);
150+
node1.appendChild(textnode1);
151+
document.getElementById("list").appendChild(node1);
152+
153+
var node3 = document.createElement("li");
154+
var textnode3 = document.createTextNode(lengths[lengths.length - 1]);
155+
node3.appendChild(textnode3);
156+
document.getElementById("list").appendChild(node3);
157+
}
158+
if (j > 2) {
159+
var node2 = document.createElement("li");
160+
var textnode2 = document.createTextNode(
161+
(angles[angles.length - 1] / Math.PI) * -180
162+
);
163+
node2.appendChild(textnode2);
164+
document.getElementById("list").appendChild(node2);
165+
166+
var node3 = document.createElement("li");
167+
var textnode3 = document.createTextNode(lengths[lengths.length - 1]);
168+
node3.appendChild(textnode3);
169+
document.getElementById("list").appendChild(node3);
170+
}
171+
vectors = [];
172+
angles = [];
173+
vectorAngles = [];
174+
}
175+
document.getElementById("x1").value = "";
176+
document.getElementById("y1").value = "";
177+
document.querySelector("form").onsubmit = onSubmit;*/

matjava2.html

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<html>
2+
<head> </head>
3+
<body>
4+
<form id="calcForm">
5+
<p>
6+
x:<input id="x1" type="number" value="" /> y:<input
7+
id="y1"
8+
type="number"
9+
value=""
10+
/>
11+
</p>
12+
<input type="submit" />
13+
start:
14+
<select id="startValue">
15+
<option value="right">right</option>
16+
<option value="up">up</option>
17+
</select>
18+
direction:
19+
<select id="direction">
20+
<option value="forward">forward</option>
21+
<option value="backward">backward</option>
22+
</select>
23+
</form>
24+
<ul id="list"></ul>
25+
<script src="matematikascript.js"></script>
26+
</body>
27+
</html>

0 commit comments

Comments
 (0)