Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA] Vettore contenente coordinate di una retta

    Salve a tutti, vorrei costruire un vettore che contenga tutte le cordinate di una retta, mi spiego:

    per la retta (0,0) (0,8) il vettore conterrà 0 0, 0 1, ........ 0 8

    devo creare due cicli for, uno per le x e uno per le y???

    for(int i=startX; i<=endX; i++)
    x[i] = i;

    for(int j=startY; i<=endY; j++)
    x[j] = j;
    (In questo modo ovviamente posso inserire solo il quadrante x+ y+)

    Potete consigliarmi qualche altra soluzione molto + elegante?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Vettore contenente coordinate di una retta

    Originariamente inviato da ricercato
    per la retta (0,0) (0,8) il vettore conterrà 0 0, 0 1, ........ 0 8

    devo creare due cicli for, uno per le x e uno per le y???
    No. Qui non è nemmeno un problema di programmazione ma ... di geometria!!!

    Le coordinate dei 2 punti le potresti anche tenere come valori interi ma se vuoi calcolare dei valori intermedi, devi usare dei valori floating-point (altrimenti non avrebbe senso!).

    Prendiamo la retta (0,0)-(3,2). In mezzo (prendendo come riferimento dei punti sulla ascissa) avresti i punti (1,0.6666666...) e (2,1.333333....).

    Esempio in Java:
    codice:
    public class Prova
    {
        public static void main (String[] args)
        {
            int x1, y1, x2, y2, x;
            float p, xp, yp;
    
            x1=0;
            y1=0;
            x2=3;
            y2=2;
    
            p = ((float) y2 - y1) / (x2 - x1);
    
            for (x=x1; x<=x2; x++)
            {
                xp = x;
                yp = x * p;
                System.out.println ("("+xp+","+yp+")");
            }
        }
    }
    Che stampa:
    (0.0,0.0)
    (1.0,0.6666667)
    (2.0,1.3333334)
    (3.0,2.0)

    Nota bene: il mio è solo un esempio. Ci sarebbero da fare dei controlli!! Ad esempio se x2-x1 è zero, otterresti una eccezione per via della divisione per zero.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazie per la risposta.. quindi per quanto riguarda i valori negativi dovrei utilizzare una for che decrementa i valori della x/y

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ricercato
    Grazie per la risposta.. quindi per quanto riguarda i valori negativi dovrei utilizzare una for che decrementa i valori della x/y
    Ma no.
    A parte la questione della divisione per zero, il codice che ho scritto sopra è "generico" nel senso che la coordinata y viene calcolata usando la "pendenza" della retta (variabile 'p').

    Ah, nota: prima non ho "ragionato" a sufficienza sul calcolo della yp. La formula corretta è:
    codice:
    yp = y1 + (x - x1) * p;
    Chiedo scusa per la svista.

    Quindi se metti:
    x1=-4;
    y1=-3;
    x2=3;
    y2=2;

    il programma stampa correttamente:
    (-4.0,-3.0)
    (-3.0,-2.2857141)
    (-2.0,-1.5714285)
    (-1.0,-0.8571429)
    (0.0,-0.14285707)
    (1.0,0.5714288)
    (2.0,1.2857141)
    (3.0,2.0)

    Cioè per ogni valore di x (intero) da -4 a +3, calcola la y in base alla pendenza della retta.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.