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

    [JAVA] Creare una selezione da un poligono

    Salve a tutti.. Ho bisogno di un grossissimo aiuto...
    Dallo script qui sotto come potete notare creo un "poligono"..
    Adesso io vorrei crearci una selezione che mi <<sezioni>> questo poligono in strisce orizzontali.... come posso fare????

    questo è lo script.


    var m_IE = document.all?true:false;

    function getMouseXY(e)
    {
    var tempX = 0;
    var tempY = 0;

    if (m_IE)
    { // grab the x-y pos.s if browser is IE
    tempX = event.clientX + document.body.scrollLeft;
    tempY = event.clientY + document.body.scrollTop;
    }
    else
    { // grab the x-y pos.s if browser is NS
    tempX = e.pageX;
    tempY = e.pageY;
    }
    // catch possible negative values in NS4

    if (tempX < 0)
    {
    tempX = 0;
    }
    if (tempY < 0)
    {
    tempY = 0;
    }

    //alert(tempX + ", " + tempY);

    result = new Array();

    result[0] = tempX;
    result[1] = tempY;

    return result;
    }



    //Get an array of matches value
    function GetMatches(key, text)
    {
    try
    {
    if (key.length > 0 && text.length > 0)
    {
    var myRe = new RegExp(key , "g");
    var arrResult = new Array();
    while ((arr = myRe.exec(text)) != null)
    {
    arrResult.push(arr[0]);
    }
    return arrResult;
    }
    else
    return "";
    }
    catch(e)
    {
    alert("GetMatches");
    }
    }

    function DecToHex(d)
    {
    try
    {
    var hD="0123456789ABCDEF";
    var h = hD.substr(d&15,1);

    while(d>15) {d>>=4;h=hD.substr(d&15,1)+h;}

    return h;
    }
    catch(e)
    {
    alert("DecToHex");
    }
    }

    function HexToDec(h)
    {
    try
    {
    var hex = "0123456789ABCDEF";
    var esp = h.length;
    var valore = 0;
    var result = 0;

    for (iii=0; iii<h.length; iii++)
    {
    valore = hex.indexOf(h.substring(iii,iii+1)) * Math.pow(16,esp-(iii+1));
    result = result + valore;
    }
    if (result < 0)
    return "";

    return result;
    }
    catch(e)
    {
    return alert(e.description);
    }
    }


    /////////////////////////////////////////////////////////////
    //////////////////Atlas BAIMage function//////////////////
    /////////////////////////////////////////////////////////////


    /////////////////////////////////////////////////////////////
    //////////////////CallBack BAIMage function//////////////////
    /////////////////////////////////////////////////////////////

    //function GetDvg(field)
    //{
    // CallBackDvg(field,"");
    //}

    ////DVG Cache
    //var _arrDgv;
    //function JavaScriptCallBackDvg(dvg, context)
    //{
    // try
    // {
    // var key = dvg.substring(0, 7);
    // _arrDgv = new Array();
    // _arrDgv[key] = dvg;
    // }
    // catch(e)
    // {
    // alert("JavaScriptCallBackDvg");
    // }
    //}
    //var strDVG = "<Color [A=255, R=160, G=15, B=0]>:14A:::149:145:143:13A:130:12C:12A:121:11D::11E:1 23:128:12F:133:135:137:135:12E::12F:134:140::145:: 141:147:;64;6D;76;77;82;83;85;8E;99;A4;A6;A5;A4;A0 ;96;8C;83;78;6C;60;54;52;4F;4B;4C;4D;4E;58;59;5D;6 3;<Color [A=255, R=136, G=19, B=0]>:12B:130:131:133:132:12E:127:122:11D:11C:112:108: 100:FD:FE:100:102:103:104:105:104:103::10C:115:11E :123:;55;60;69;72;78;83;8C;96;A0;;A3;A6;A7;A5;A0;9 4;88;7C;73;69;60;57;52;;;;53;";
    //alert(ReBuildDVG(strDVG));

    function ReBuildDVG( DVG )
    {

    var arrTag;
    var arrStringa;
    var oldX = 0;
    var oldY = 0;
    var pointX;
    var pointY;
    var elem;

    arrTag = DVG.split("<");
    arrTag.splice(0,1);


    for(conta=0; conta<arrTag.length; conta++)
    {
    arrStringa = arrTag[conta].split(":");
    for(i=0; i<arrStringa.length; i++)
    {
    if (arrStringa[i].indexOf(">") < 0 && arrStringa[i].indexOf(";") < 0)
    {
    pointX = arrStringa[i];
    if (oldX === 0)
    {
    oldX = pointX;
    pointX = HexToDec(oldX);
    oldX = pointX;
    }
    else
    {
    pointX = (pointX === null || pointX === undefined || pointX.length === 0) ? oldX : HexToDec(pointX.toString());
    oldX = pointX;
    }
    arrStringa[i] = pointX;
    }
    }
    arrTag[conta] = arrStringa.join(":");

    arrStringa = arrTag[conta].split(";");
    for(i=0; i<arrStringa.length; i++)
    {
    if (arrStringa[i].indexOf(">") < 0 && arrStringa[i].indexOf(":") < 0)
    {
    pointY = arrStringa[i];
    if (oldY === 0)
    {
    oldY = pointY;
    pointY = HexToDec(oldY);
    oldY = pointY;
    }
    else
    {
    pointY = (pointY === null || pointY === undefined || pointY.length === 0) ? oldY : HexToDec(pointY.toString());
    oldY = pointY;
    }
    arrStringa[i] = pointY;
    }
    }
    arrTag[conta] = arrStringa.join(";");
    }

    DVG = arrTag.join("<");
    return DVG;
    }

    //alert(HexToDec("224"));
    /////////////////////////////////////////////////////////////
    //////////////////Graphics function//////////////////
    /////////////////////////////////////////////////////////////

    function AddRemovePoligon(sElement /*elementName string*/, bRemove /*bool*/)
    {
    try
    {
    var xStart, yStart, xEnd, yEnd;
    var i = 0;

    if(!bRemove)
    {
    _canvas = new Canvas("paintarea")
    var arrX = _arrPointsX[sElement + "x"];
    var arrY = _arrPointsY[sElement + "y"];
    for(i=0; i<arrX.length-1; i++)
    {
    xStart = parseInt(arrX[i]);
    yStart = parseInt(arrY[i]);
    xEnd = parseInt(arrX[i+1]);
    yEnd = parseInt(arrY[i+1]);
    //alert("(" + xStart + ", " + yStart + ")" + ";" + "(" + xEnd + ", " + yEnd + ")");
    //if(!isNaN(x) && !isNaN(y))
    //{
    var line= new Line();
    line.setLineWidth(2);
    line.setColor(new Color(255,0,120));
    line.setStartPoint(xStart, yStart);
    line.setEndPoint(xEnd, yEnd);
    _canvas.addFigure(line);
    _arrLine.push(line);
    //}
    }
    }else
    {
    for(i=0; i<_arrLine.length; i++)
    {
    _canvas.removeFigure(_arrLine[i]);
    }
    _canvas = null;
    _arrLine.length = 0;
    }
    }
    catch(e)
    {
    alert(e.description);
    }
    }

    function GetPathArr(sDvg /* fildvg */, sCol /* tag color */)
    {
    var result;
    var iStart = sDvg.indexOf(sCol) + sCol.length;
    var iEnd = sDvg.indexOf("<", iStart);
    result = sDvg.substring(iStart, iEnd);
    return result.split("|");
    }

    //////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////InsidePolygon//////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////

    //////////***Sample***///////////
    //var m_arrPointsX = new Array();
    //var m_arrPointsY = new Array();
    //var m_vertexNumber = 4;
    //var m_pointX = 3;
    //var m_pointY = 3;

    //m_arrPointsX[0] = 2;
    //m_arrPointsX[1] = 2;
    //m_arrPointsX[2] = 4;
    //m_arrPointsX[3] = 4;
    //m_arrPointsX[4] = 2;

    //m_arrPointsY[0] = 2;
    //m_arrPointsY[1] = 4;
    //m_arrPointsY[2] = 4;
    //m_arrPointsY[3] = 2;
    //m_arrPointsY[4] = 2;

    //alert(InsidePolygon(m_arrPointsX, m_arrPointsY, m_vertexNumber, m_pointX, m_pointY));

    /////////////////////////////////

    function InsidePolygon(arrPointsX /* x points array */, arrPointsY /* y points array */
    , vertexNumber /* number of vertex */, pointX /* x point to match */, pointY /* y point to match */)
    {

    //
    // InsidePoint definisce la posizione di un punto rispetto
    // a un poligono (interno o esterno)
    //
    // input arrPointsX = ascisse vertici del poligono
    // arrPointsY = ordinate vertici poligono
    // vertexNumber = nr. vertici poligono
    // pointX & pointY = coord. punto
    //
    // output loc
    //
    // return 0 n. vertici < 3
    // return 1 il punto e' esterno al poligono
    // return 2 il punto coincide con un vertice
    // return 3 il punto sta sulla frontiera del poligono
    // return 4 il punto e' interno al poligono
    //
    var i = 0;
    var theta = 0;
    var alfa = 0;
    var xnew = 0;
    var ynew = 0;
    var pi = 4 * Math.atan(1);
    var angle = 0;

    if (vertexNumber < 3)
    {
    return 0; // poligono inesistente
    }
    for (i = 0; i <= vertexNumber; i++)
    {
    if (pointX == arrPointsX[i] && pointY == arrPointsY[i])
    {
    return 2;
    }
    }

    arrPointsX[vertexNumber] = arrPointsX[0]; // forza la chisura del poligono
    arrPointsY[vertexNumber] = arrPointsY[0]; //
    for (i=0; i<vertexNumber; i++)
    {
    theta = Math.atan2(arrPointsY[i] - pointY, arrPointsX[i] - pointX)
    xnew = (arrPointsX[i + 1] - pointX) * Math.cos(theta) + (arrPointsY[i + 1] - pointY) * Math.sin(theta)
    ynew = (arrPointsY[i + 1] - pointY) * Math.cos(theta) - (arrPointsX[i + 1] - pointX) * Math.sin(theta)
    alfa = Math.atan2(ynew, xnew)

    if (Math.abs(alfa/10000) == Math.abs(pi/10000))
    {
    return 3; // punto sul lato del poligono
    }
    angle = angle + alfa;
    }

    if (Math.abs(angle) < 0.0001)
    return 1; // Punto esterno

    if (Math.abs(angle) > pi)
    return 4; // punto interno
    }

    /////////////////////////////////////////////////////////////////////////////////////////////




    Grazie in anticipo a tutti.. e spero che qualcuno possa darmi un aiuto! :master:

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Questo è JavaScript. Sposto nel forum dedicato.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    ok grazie mille.. e scusate per la sezione sbagliata...

    spero di trovare al più presto un vostro consiglio!

  4. #4

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998

    Re: [JAVA] Creare una selezione da un poligono

    Originariamente inviato da stoppino
    Dallo script qui sotto come potete notare creo un "poligono"..
    Veramente dal solo script non si evince tanto... ci chiedi di studiarlo, creare una pagina che lo utilizzi....

    Posta un link ad una tua pagina...

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    purtroppo nn è una pagina web... è un programma gestito nel browser e necessito di JavaScript per poter fargli fare delle azioni senza dover creare un refresh continuo delle pagine...

    nn so se mi sono spigato..

    PS il programma in questione è protetto da copyright quindi nn posso mettervelo a disposizione.. altrimenti vi inserirei un link per scaricarlo!!!

  7. #7
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da stoppino
    purtroppo nn è una pagina web... è un programma gestito nel browser e necessito di JavaScript per poter fargli fare delle azioni senza dover creare un refresh continuo delle pagine...

    nn so se mi sono spigato..

    PS il programma in questione è protetto da copyright quindi nn posso mettervelo a disposizione.. altrimenti vi inserirei un link per scaricarlo!!!
    Peccato... ma dal solo nome delle funzioni non si puo' ricavare cio' che e' lecito aspettarsi che facciano... se prima o poi qualcuno passando di qua sara' solleticato dalla curiosita' di riprodurre cio' che tu hai fatto avrai un consiglio e presumibilmente una copia reingegnerizzata del tuo programma

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  8. #8
    grazie comunque..
    nessun problema...

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.