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

    Consigli per migliorare questo codice (forse funzione con parametro?)

    codice:
     
      var mycharts = [[35,40,173,180]]; //min.zAxis,max.zAxis,min.xAxis,maxxAxis  l'array si crea con una funzione, e gli elementi vengono eliminati dopo aver cliccato un pulsante, quindi gli elementi cambiano...
    
    
         function linefirst(){
            for (var s = 0; s <mycharts.length; s++) {
              var cas= mycharts[s];
              var minZ=  cas[0];
              var maxZ= cas[1];
              var minX=  cas[2];
              var maxX= cas[3];
              var middleZ= (minZ+maxZ)/2;
            } 
            var arraylinef=[];
            arraylinef.push([[minX,750,minZ],[maxX,750,minZ]]);
            return arraylinef;
       }
     
         function linesecond(){
              for (var s = 0; s <mycharts.length; s++) {
              var cas= mycharts[s];
              var minZ=  cas[0];
              var maxZ= cas[1];
              var minX=  cas[2];
              var maxX= cas[3];
              var middleZ= (minZ+maxZ)/2;
           } 
           var arraylines=[];
           arraylines.push([[minX,750,middleZ],[maxX,750,middleZ]]);
           return arraylines;
       }
     
         function linethird(){
              for (var s = 0; s <mycharts.length; s++) {
              var cas= mycharts[s];
              var minZ= cas[0];
              var maxZ= cas[1];
              var minX= cas[2];
              var maxX= cas[3];
              var middleZ= (minZ+maxZ)/2;
            } 
            var arraylinet=[];
            arraylinet.push([[minX,750,maxZ],[maxX,750,maxZ]]);
            return arraylinet;
        }
    
    //altre tre funzioni
    
         function pointfirst(){
            for (var s = 0; s <mycharts.length; s++) {
              var cas= mycharts[s];
              var minZ=  cas[0];
              var maxZ= cas[1];
              var minX=  cas[2];
              var maxX= cas[3];
              var pointX= maxX+1;
              var pointfZ= minZ-0.3;
              var middleZ= (minZ+maxZ)/2;
           } 
           var arraypointf=[];
           arraypointf.push([[pointX,750,pointfZ]]);
           return arraypointf;
        }
     
         function pointsecond(){
            for (var s = 0; s <mycharts.length; s++) {
              var cas= mycharts[s];
              var minZ=  cas[0];
              var maxZ= cas[1];
              var minX=  cas[2];
              var maxX= cas[3];
              var pointX= maxX+1;
              var middleZ= (minZ+maxZ)/2;
              var pointsZ= middleZ-0.3;         
           } 
          var arraypoints=[];
          arraypoints.push([[pointX,750,pointsZ]]);
          return arraypoints;
       }
     
         function pointthird(){
            for (var s = 0; s <mycharts.length; s++) {
              var cas= mycharts[s];
              var minZ= cas[0];
              var maxZ= cas[1];
              var minX= cas[2];
              var maxX= cas[3];
              var pointX= maxX+1;         
              var pointtZ= maxZ-0.5;         
           } 
           var arraypointt=[];
           arraypointt.push([[pointX,750,pointtZ]]);
           return arraypointt;
       }


    Allora vi spiego:

    sto lavorando su del codice che implementa le librerie Javascript di HIGHCHARTS.
    Highcharts mi permette di creare grafici particolari e anche in 3d.

    Nel mio codice sto cercando di disegnare 3 linee (le prime tre funzioni del codice presente ad inzio post) e 3 punti (le ultime tre funzioni).


    Se analizziamo le prime 3 funzioni, ognuna di essa termina con il return di un array. In quest'array sono presente le 3 coordinate di partenza della linea (essendo un grafico 3d) e le tre coordinate dove la linea terminerà.


    Nel codice Highcharts per disegnare la linea ci vuole un array del genere (per il punto l'array restituito è giustamente leggermente diverso).
    Quindi con il codice in alto, io non farei altro che richiamare le varie funzioni...



    Questo discorso vale anche per le ultime 3 funzioni che servono a disegnare i 3 punti sul grafico.

    Ora il mio problema è che il codice da me postato non è molto intelligente , nel senso che non è una gran cosa scrivere sei funzioni quindi tutte quelle righe di codice.

    Io spero si possa fare qualcosa per rendere il codice un po' più snello, ad esempio limitando il tutto a due funzioni (una per le linee e l'altra per i punti), ma la mia ignoranza in materia mi limita nel trovare una soluzione...

    Perciò vorrei un vostro aiuto!

    Io avevo pensato che le funzioni con il parametro potrebbero essermi d'aiuto però non ne sono cosi convinto...




    Mi scuso per la stranezza del topic, e spero che qualcuno di voi possa darmi una mano!
    Grazie mille in anticipo!!!!

  2. #2
    Forse aprire il topic mi è servito da ispirazione forse funziona... provo a farne una anche per i punti e vi dico se funziona
    codice:
    function moltiplica(para){
      var parametro= para;
      for (var s = 0; s <mychart.length; s++) {  
       var cas= mychart[s];
       //var minZ= cas[0];
       //var maxZ= cas[1];
       var minX= cas[3];
       var maxX= cas[4];
       //var middleZ= (minZ+maxZ)/2;
      } 
      var arraylinee=[];
      
      if(parametro==0){
       arraylinee.push([minX,750,0],[maxX,750,0]);
      }
      else if(parametro==5){
       arraylinee.push([minX,750,5],[maxX,750,5]);
      }
      else if(parametro==10){
       arraylinee.push([minX,750,10],[maxX,750,10]);
      }
      return arraylinee;
     }

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    direi che l'if non serve:

    codice:
    function moltiplica(para){
      for (var s = 0; s <mychart.length; s++) {  
       var cas= mychart[s];
       //var minZ= cas[0];
       //var maxZ= cas[1];
       var minX= cas[3];
       var maxX= cas[4];
       //var middleZ= (minZ+maxZ)/2;
      } 
      var arraylinee=[];
      
       arraylinee.push([minX,750,para],[maxX,750,para]);
      return arraylinee;

  4. #4
    si hai ragione

    vindav saresti cosi gentile da dirmi se quest'altra funzione ha qualche errore?

    codice:
    var mychart=[[1,-39,-35,175,180]];
    
    function assez(){  
      for (var s = 0; s <mychart; s++) {
        var cas= mychart[s];
        var latinf= cas[1];
        var latsup= cas[2];
        }  
        var arrayz=[];
        var valoremin= latinf;
        var valoremax= latsup;
        
      arrayz.push({
       min: valoremin,
       max: valoremax,
       gridLineWidth: 1
      });  
      
      return arrayz;
     }

    no perché l'alert mi da che l'array è vuota -.-
    e mi sembra assurdo dato che non mi ri risultano ci siano errori.
    Praticamente quell'array di ritorno serve a impostare il valore minimo e massimo dell'asse z del grafico

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    nel for la condizione deve essere cosi: s<mychart.length come era nel codice precedente

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 © 2024 vBulletin Solutions, Inc. All rights reserved.