Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Matrici

  1. #1

    Matrici

    Ho una matrice $mat[r][c] di 8 colonne e 6 righe, associata ad uno spazio di 800x600 pixel.
    In questo spazio sono presenti dei punti (x,y), che vengono processati uno ad uno con un while.
    Come faccio a modificare la matrice, in modo da avere una mappa dei punti presenti nello spazio? Ad esempio, se un solo punto ha coordinate (420,226) il valore di $mat[2][4]=1, e tutti gli altri $mat = 0.
    Come potrei fare?
    Grazie.

  2. #2
    Per calcolare gli indici r e c della matrice è sufficiente matematica da elementari.

    Codice PHP:
    $r floor($x 100);
    $c floor($y 100); 

  3. #3
    Originariamente inviato da filippo.toso
    Per calcolare gli indici r e c della matrice è sufficiente matematica da elementari.

    Codice PHP:
    $r floor($x 100);
    $c floor($y 100); 
    Magari fosse così semplice... non hai capito quello che voglio fare!
    Io la matrice non cel'ho ancora, la voglio creare in base ai punti dell'immagine!
    Guarda:

    Da quei puntini rossi vorrei ricavarmi questa matrice:
    0010010
    0100000
    1001000
    0010010
    1010000

  4. #4
    Originariamente inviato da ale152
    Magari fosse così semplice... non hai capito quello che voglio fare!
    Penso di aver capito esattamente quello che vuoi fare, ed effettivamente è così semplice come ti ho indicato.

    Codice PHP:
    <pre>
    <?php 

    $im 
    = @imagecreate(800600) or die("Cannot Initialize new GD image stream");
    imagecolorallocate($im255255255);
    $red imagecolorallocate($im25500);
    for (
    $i 0$i 10$i++) {
        
    imagesetpixel($imrand(0800 1), rand(0600 1), $red);    
    }

    $mat = array();
    for (
    $r 0$r 8$r++) {
        for (
    $c 0$c 6$c++) {
            
    $mat[$r][$c] = 0;
        }
    }

    for (
    $x 0$x 800$x++) {
        for (
    $y 0$y 600$y++) {
            
    $col imagecolorat($im$x$y);
            
    $rgb imagecolorsforindex($im$col);
            
    $color sprintf('#%02X%02X%02X'$rgb['red'], $rgb['green'], $rgb['blue']);
            if (
    $color != '#FFFFFF') {
                
    $r floor($x 100);
                
    $c floor($y 100);
                
    $mat[$r][$c]++;
            }
        }
    }

    print(
    '<pre>');
    for (
    $c 0$c 6$c++) {
        for (
    $r 0$r 8$r++) {
            print(
    $mat[$r][$c]);
        }
        print(
    "\r\n");
    }
    print(
    '</pre>');

    imagedestroy($im);

    ?>
    </pre>
    In futuro ti suggerisco di provare a dedicare un po' più di impegno per capire i suggerimenti che ti vengono dati.

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.