Svolto programma su classe point tridimensionale ma....

di il
8 risposte

Svolto programma su classe point tridimensionale ma....

Ho un dubbio: cioè questi valori dopo la rotazione sono esatti??
https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-prn2/v/t35.0-12/10272158_4142164329088_267240415_o.jpg?oh=29281f8c46b386bc0cc873f05c3ddec5&oe=5350241C&__gda__=1397761014_a83661f4a0ba23618ef578680b5ed4fc
il codice è questo:
point.h
class Point
{
public:
	Point(float =0,float =0,float =0);
	void setPoint(float ,float ,float );
	float getX() const;
	Point& rotateX(int );
	float getY() const;
	Point& rotateY(int );
	float getZ() const;
	Point& rotateZ(int );

private:
	float x;
	float y;
	float z;
};

point.cpp
#include "point.h"
#include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std;

Point::Point(float first, float second, float third)
{
	x=first;
	y=second;
	z=third;
	//le coordinate possono avere un qualsiasi valore su un asse cartesiano
}

void Point::setPoint(float first, float second, float third)
{
	x=first;
	y=second;
	z=third;
	
}

float Point::getX() const
{
	return x;
}

float Point::getY() const
{
	return y;
}

float Point::getZ() const
{
	return z;
}

Point& Point::rotateX(int angle)
{
	if(angle>0 && angle<=360) //il punto può essere ruotato di un angolo compreso tra 0 e 360 gradi
	{
		y=y*cos(angle)-z*sin(angle);
		z=y*sin(angle)+z*cos(angle);

	}
	else
		cout<<"impossibile ruotare il punto intorno ad x: angolo non valido\n";
	return *this; //
}

Point& Point::rotateY(int angle)
{
	if(angle>0 && angle <=360) //il punto può essere ruotato di un angolo compreso tra 0 e 360 gradi
	{
		x=x*cos(angle)+z*sin(angle);
		z=-x*sin(angle)+z*cos(angle);

	}
	else
		cout<<"impossibile ruotare il punto intorno ad y: angolo non valido\n";

	return *this;
}

Point& Point::rotateZ(int angle)
{
	if(angle>0 && angle <=360) //il punto può essere ruotato di un angolo compreso tra 0 e 360 gradi
	{
		x=x*cos(angle)-y*sin(angle);
		y=x*sin(angle)+y*cos(angle);

	}
	else
		cout<<"impossibile ruotare il punto intorno a z: angolo non valido\n";

	return *this;
}

mainpoint.cpp
#include "point.h"
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
	Point point1(2.5,0,2.0),point2(3.5);
	cout<<"le coordinate di point1 sono: "
			<<"x:"<<point1.getX()
			<<" y:"<<point1.getY()
			<<" z:"<<point1.getZ()<<"\n";

	cout<<"le coordinate di point2 sono: "
			<<"x:"<<point2.getX()
			<<" y:"<<point2.getY()
			<<" z:"<<point2.getZ()<<"\n";

	//esempio di rotazione intorno ad un asse
	cout<<"\nsto ruotando point1 intorno all'asse x..\n";
	point1.rotateX(90); //si possono utilizzare angoli qualsiasi purchè tra 0 e 360 gradi

	cout<<"le coordinate di point1 sono: "
				<<"x:"<<point1.getX()
				<<" y:"<<point1.getY()
				<<" z:"<<point1.getZ()<<"\n";

	cout<<"sto modificando point2..\n";
	point2.setPoint(4.0,2.5,2.0);
	cout<<"le coordinate di point2 sono: "
				<<"x:"<<point2.getX()
				<<" y:"<<point2.getY()
				<<" z:"<<point2.getZ()<<"\n";

	return 0;
}

8 Risposte

  • Re: Svolto programma su classe point tridimensionale ma....

    Non credo proprio. Tu assumi che gli angoli siano espressi in gradi ma non è così. Per le funzioni sen e cos gli angoli sono espressi in radianti.
  • Re: Svolto programma su classe point tridimensionale ma....

    Eh si infatti poi ho corretto
  • Re: Svolto programma su classe point tridimensionale ma....

    Praticamente era inutile postare sul forum ...
  • Re: Svolto programma su classe point tridimensionale ma....

    Vabbè non c'è bisogno di scaldarsi , semplicemente me ne sono accorto all'università e non avevo l'opportunità di mod il post. Bah siete l'unico forum in cui invece di dare consigli state sempre a giudicare bah
  • Re: Svolto programma su classe point tridimensionale ma....

    Perche' negli altri forum, invece...
    suscettibilino...
  • Re: Svolto programma su classe point tridimensionale ma....

    birkhoff92 ha scritto:


    vabbè non c'è bisogno di scaldarsi , semplicemente me ne sono accorto all'università e non avevo l'opportunità di mod il post. Bah siete l'unico forum in cui invece di dare consigli state sempre a giudicare bah
    Primo : non mi sono scaldato ...

    Secondo : i consigli li hai avuto Raffaele ... di che giudizi parli?

    Terzo : voleva essere un consiglio per ragionare un po' di più da solo e risolvere i piccoli problemi senza doverti appoggiare ad altri ...

    Quarto : sei stato in mille forum, ti ho risposto quasi ovunque hai postato ... di cosa ti lamenti? In ogni caso, se non vuoi risposte ai tuoi quesiti, non li avrai ...
  • Re: Svolto programma su classe point tridimensionale ma....

    Posto in mille forum poichè all'università le cose ce le fanno fare da cani. Siccome ci tengo a essere bravo nella programmazione chiedo consigli a chi è più esperto di me. Non facciamo solo questo visto che all'università di informatica gli esami si contano sulle punte delle dita , quindi tra metodi, teoria, fondamenti di sistemi, etc l'unica chance che ho per imparare a non commettere errori è chiedere nei forum, visto che non posso stare mesi solo a fare c++.
  • Re: Svolto programma su classe point tridimensionale ma....

    all'università le cose ce le fanno fare da cani
    Caro birkhoff92, forse dovresti smetterla di dare la colpa agli altri (è solo una perdita di tempo) e iniziare ad affrontare i problemi in maniera metodica: in questo caso tu stesso ci hai scritto che hai risolto da solo... infatti bastava fare due calcoli su carta e forse hai perso più tempo a scrivere nei forum che a risolvere da te
    Buono studio!
Devi accedere o registrarti per scrivere nel forum
8 risposte