Vertice sup sinistro e vertice inf destro rettangolo

valesyle92
ho un metodo costruttore che riceve due punti in ingresso ... e li assegna al vertice superiore sinistro o vertice superiore destro di un rettangolo in questo modo
public Rettangolo(Punto vertice1, Punto vertice2) {
        /* Determino il vertice superiore sinistro del rettangolo, i vertici
         * che ho ricevuto non è detto siano per forza quello superiore sinistro
         * e quello inferiore destro, potrebbero essere entrambi sullo stesso
         * lato del rettangolo, oppure essere uno il superiore destro e l'altro
         * l'inferiore sinistro.
                 verticeSupSin = new Punto(Math.min(vertice1.x, vertice2.x), Math.max(vertice1.y, vertice2.y));
        verticeInfDes = new Punto(Math.max(vertice1.x, vertice2.x), Math.min(vertice1.y, vertice2.y));
    }



Risposte
canemacchina
Allora, premettendo che non ho capito bene dove vuoi arrivare...

Il codice è giusto. Il problema piuttosto è: come speri di individuare vertice sup sinistro e inf destro di un rettangolo, se come unica informazione io passo due punti sullo stesso lato?
Impossibile, mancano informazioni. Quindi o ti passano due punti diametralmente opposti, o sei del gatto, come si dice.

valesyle92
ah ecco...questo è la soluzione che ho trovato di un' esercizio che ha dato il prof ma mi sembra sbagliata a questo punto a me no che non vengano passati due punti opposti come dici tu !!...
il punto era che un rettangolo si puo' individuare anche solo da due punti senza avere tuttie quattro...e questi due punti sono il superiore sinistro e l'inferiore destro...quindi il costruttore deve inizializzare solo due punti...il problema nasce dal fatto che non è detto che questi due punti siano per forza quei due supsin e infdes ... ma lo stesso li nella soluzione il costruttore riesce ad inizializzarli... Comunque non e' detto che vengano passati due vertici sullo stesso lato ma secondo me allora e' impossibile

canemacchina
Io continuo a ripetere che se mi dai due punti sullo stesso lato, mi stai dando un po' poche informazioni. Non posso in nessun modo ricavare il rettangolo.
Con due punti sullo stesso lato, posso trovare la misura di due lati paralleli. Poi a che distanza stiano uno dall'altro, non lo saprò mai.

Per la precisione, servono due punti diametralmente opposti, che siano gli estremi di una delle due diagonali. O ti passano sup destro e inf sinistro, o inf destro e sup sinistro.
Nessun'altra combinazione di due punti scelti lungo i lati del rettangolo possono farmi ottenere il rettangolo originale.
Non si esce da questa cosa.
Forse con "non è detto che sia sup sinistro e inf destro" intedeva semplicemente che o sono quelli, o sono inf sinistro e sup destro. Quindi per quello nel codice fa i vari max e min.
Ma non c'è modo di determinare questo rettangolo se mi dai due punti sullo stesso lato.

apatriarca
I due punti devono essere necessariamente diametralmente opposti per definire un rettangolo allineato con gli assi (se no ottieni un rettangolo degenere corrispondente ad un segmento), ma non è necessario che i punti passati siano il superiore sinistro e o l'inferiore destro. Puoi infatti anche passare il superiore destro e l'inferiore sinistro. Devono però essere diametralmente opposti in modo che possano definire le due coppie di rette parallele che si incontrano in questi due punti e definiscono il rettangolo. Credo comunque che tu ti stia facendo troppi problemi e che si dia per scontato che i due punti passati al costruttori siano sempre sufficienti a definire il rettangolo e nel caso in cui siano allineati lungo la direzione di un qualche asse si ha un rettangolo degenere.

valesyle92
Molto chiari !!!! Si a volte mi faccio troppi problemi è vero ... e che sono alle prime armi...menomale che ci siete !!!! Vi ringrazio tantissimo !!!!!!!!!!!!!!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.