• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Fizyczny wektor - szablon

42 Warsaw Coding Academy
0 głosów
148 wizyt
pytanie zadane 18 kwietnia 2017 w C i C++ przez Dominik Kulis Użytkownik (720 p.)
zamknięte 18 kwietnia 2017 przez Dominik Kulis

Potrzebuje stworzyć swoją klasa do wykonywania obliczeń na wektorach. Teraz daje poprawne wyniki lecz w jakiś dziwny sposób zmieniają się wartości na których pracuje. Mógłby ktoś mi pomóc w zlokalizowaniu błędu?

#pragma once

#include"LibsAndDeclarations.h"
template<class T = float>
class Vector
{
public:
	T x;
	T y;

	Vector();
	Vector(Vector &aVector);
	Vector(T aX, T aY);
	~Vector();

	Vector & operator = (Vector &aVector)
	{
		this->x = aVector.x;
		this->y = aVector.y;

		return *this;
	}
	Vector & operator += (Vector &aVector)
	{
		this->x += aVector.x;
		this->y += aVector.y;

		return *this;
	}
	Vector & operator -= (Vector &aVector)
	{
		this->x -= aVector.x;
		this->y -= aVector.y;

		return *this;
	}
	Vector & operator *= (T aMulti)
	{
		this->x *= aMulti;
		this->y *= aMulti;

		return *this;
	}
	Vector & operator /= (T aDiv)
	{
		this->x *= aDiv;
		this->y *= aDiv;

		return *this;
	}

	Vector & operator + (Vector &aVector)
	{
		this->x += aVector.x;
		this->y += aVector.y;

		return *this;
	}
	Vector & operator - (Vector &aVector) 
	{
		this->x -= aVector.x;
		this->y -= aVector.y;

		return *this;
	}
	Vector & operator * (T aMulti)
	{
		this->x *= aMulti;
		this->y *= aMulti;

		return *this;
	}
	Vector & operator / (T aDiv)
	{
		this->x /= aDiv;
		this->y /= aDiv;

		return *this;
	}
	Vector & operator - ()
	{
		this->x = -x;
		this->y = -y;
		return *this;
	}
	T & operator [] (const int aConter)
	{
		if (aConter == 0)
			return x;
		else if (aConter == 1)
			return y;
		else
		{
			std::cout << "Wyjscie poza rozmiar vectora! " << std::endl;
			exit(0);
		}
	}

	T length()
	{
		return (T)std::sqrt(x*x + y*y);
	}

	void normalize()
	{
		T temp = length();
		if (0 != temp)
		{
			x /= temp;
			y /= temp;
		}
	}
// Wektor prostokatny
	Vector perpendicular() 
	{
		return Vector(-y, x);
	}
// Iloczyn skalarny
	T dotProduct(Vector &aVector)
	{
		return x * aVector.x + y * aVector.y;
	}
// Minimalny kat miedzy wektorami
	T angle(Vector &aVector)
	{
		return (T)std::acos(dotProduct(aVector) / length() * aVector.length());
	}
// Iloczyn skalarny z wektorem prostopadlym
	T perpDotProduct(Vector &aVector)
	{
		return this->perpendicular().dotProduct(aVector);
	}

	void reset()
	{
		this->x = 0;
		this->y = 0;
	}
	void setVector(Vector &aVector)
	{
		this->x = aVector.x;
		this->y = aVector.y;
	}
};

template<class T>
inline Vector<T>::Vector()
{
	x = 0;
	y = 0;
}

template<class T>
inline Vector<T>::Vector(Vector & aVector)
{
	this->x = aVector.x;
	this->y = aVector.y;
}

template<class T>
inline Vector<T>::Vector(T aX, T aY)
{
	this->x = aX;
	this->y = aY;
}

template<class T>
inline Vector<T>::~Vector()
{
}

 

komentarz zamknięcia: Problem rozwiązany. :)
komentarz 18 kwietnia 2017 przez unknown Nałogowiec (39,560 p.)
Debuguj

Podobne pytania

0 głosów
2 odpowiedzi 1,063 wizyt
pytanie zadane 6 grudnia 2016 w Matematyka, fizyka, logika przez Tom_Ja Dyskutant (7,970 p.)
+1 głos
0 odpowiedzi 292 wizyt
pytanie zadane 10 marca 2021 w Matematyka, fizyka, logika przez Zaqu93 Gaduła (4,850 p.)
0 głosów
0 odpowiedzi 197 wizyt
pytanie zadane 9 czerwca 2019 w Matematyka, fizyka, logika przez niezalogowany

93,383 zapytań

142,382 odpowiedzi

322,539 komentarzy

62,744 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...