Download vector.py from NextGenC/SwarmMind: direct link, hf CLI and curl.
- Browser
- Download file 3.19 kB
-
https://huggingface.co/NextGenC/SwarmMind/resolve/main/vector.py
- Command line
-
hf download hf://NextGenC/SwarmMind/vector.py
-
curl -L -o vector.py https://huggingface.co/NextGenC/SwarmMind/resolve/main/vector.py
3.19 kB
| # swarm_mind_v1/vector.py | |
| import math | |
| import random | |
| class Vector2D: | |
| """2 Boyutlu Vektör Sınıfı.""" | |
| def __init__(self, x=0.0, y=0.0): | |
| self.x = x | |
| self.y = y | |
| def __str__(self): | |
| """Vektörün string temsilini döndürür.""" | |
| return f"Vector2D({self.x:.2f}, {self.y:.2f})" | |
| def __add__(self, other): | |
| """Vektör toplama (+) operatörü.""" | |
| return Vector2D(self.x + other.x, self.y + other.y) | |
| def __sub__(self, other): | |
| """Vektör çıkarma (-) operatörü.""" | |
| return Vector2D(self.x - other.x, self.y - other.y) | |
| def __mul__(self, scalar): | |
| """Skaler ile çarpma (*) operatörü.""" | |
| return Vector2D(self.x * scalar, self.y * scalar) | |
| def __truediv__(self, scalar): | |
| """Skaler ile bölme (/) operatörü.""" | |
| if scalar == 0: | |
| return Vector2D() # Sıfıra bölme hatasını önle | |
| return Vector2D(self.x / scalar, self.y / scalar) | |
| def magnitude_squared(self): | |
| """Vektörün büyüklüğünün karesini döndürür (sqrt daha yavaştır).""" | |
| return self.x * self.x + self.y * self.y | |
| def magnitude(self): | |
| """Vektörün büyüklüğünü (uzunluğunu) döndürür.""" | |
| mag_sq = self.magnitude_squared() | |
| if mag_sq == 0: | |
| return 0.0 | |
| return math.sqrt(mag_sq) | |
| def normalize(self): | |
| """Vektörü birim vektöre dönüştürür (büyüklüğü 1 yapar).""" | |
| mag = self.magnitude() | |
| if mag > 0: | |
| self.x /= mag | |
| self.y /= mag | |
| return self # Zincirleme için kendini döndür | |
| def get_normalized(self): | |
| """Vektörün normalize edilmiş bir kopyasını döndürür.""" | |
| mag = self.magnitude() | |
| if mag == 0: | |
| return Vector2D() | |
| return Vector2D(self.x / mag, self.y / mag) | |
| def limit(self, max_magnitude): | |
| """Vektörün büyüklüğünü verilen maksimum değerle sınırlar.""" | |
| if self.magnitude_squared() > max_magnitude * max_magnitude: | |
| self.normalize() | |
| self.x *= max_magnitude | |
| self.y *= max_magnitude | |
| return self # Zincirleme için kendini döndür | |
| def distance_squared(self, other): | |
| """İki vektör arasındaki mesafenin karesini döndürür.""" | |
| dx = self.x - other.x | |
| dy = self.y - other.y | |
| return dx * dx + dy * dy | |
| def distance(self, other): | |
| """İki vektör arasındaki mesafeyi döndürür.""" | |
| return math.sqrt(self.distance_squared(other)) | |
| def set_magnitude(self, magnitude): | |
| """Vektörün büyüklüğünü ayarlar.""" | |
| self.normalize() | |
| self.x *= magnitude | |
| self.y *= magnitude | |
| return self | |
| def heading(self): | |
| """Vektörün açısını (radyan cinsinden) döndürür.""" | |
| return math.atan2(self.y, self.x) | |
| def random_vector(): | |
| """Rastgele bir yönü olan birim vektör oluşturur.""" | |
| angle = random.uniform(0, 2 * math.pi) | |
| return Vector2D(math.cos(angle), math.sin(angle)) |