» »

Bézierova krivulja - Android

Bézierova krivulja - Android

messi ::

Pozdravljeni,
trudim se da bi uspešno narisal neko krivuljo ne kvadratne oblike ampak lepo zaobljeno zato sem uporabil 3 točke in potem s pomočjo ukaza cubicTo, potegnil črto. Vendar mi žal potegne zelo čudno črto, če pogledamo primer na sliki ko kliknem in mi potegne tako:
 Slika o Bezarovi krivulji

Slika o Bezarovi krivulji



Želel bi si da bi dobil tako črto kot pri wikipedi in ne tako kot jas ;) Če ima kdo idejo kako to popravim bi bil zelo vesel. Kodo sem prilimal in pomemben je verjetno samo prvi del, glede da drugi je bil tudi pred tem enak, samo mislim da je problem glede točk, kako jih zazna .

Koda prvi del:
	case FREEHAND:
    			float[] pts;
    			float[] ptk;
    			float[] ptj;
    			pts = new float[2];
    			ptk = new float[2];
    			ptj = new float[2];
    			imageMatrix.invert(inv);
    			
    			if (mCurrentShape == null)
    			{				
    				mCurrentShape = new FreeHand();
    
    				((FreeHand) mCurrentShape).setBegin(mDownPoint);
    				pts[0] = (float)((FreeHand) mCurrentShape).getBegin().getX();
    				pts[1] = (float)((FreeHand) mCurrentShape).getBegin().getY();
    				inv.mapPoints(pts);
    				((FreeHand) mCurrentShape).getPath().moveTo(pts[0], pts[1]);
   
    			}
    			((FreeHand) mCurrentShape).setSredina(mDownPoint);
    			ptj[0] = (float)((FreeHand) mCurrentShape).getSredina().getX();
    			ptj[1] = (float)((FreeHand) mCurrentShape).getSredina().getY();
    			((FreeHand) mCurrentShape).getPath().moveTo(ptj[0], ptj[1]);
    			inv.mapPoints(ptj);
    		
    			ptk[0] = (float)currentPoint.getX();
    			ptk[1] = (float)currentPoint.getY();
    			inv.mapPoints(ptk);
    			((FreeHand) mCurrentShape).getPath().cubicTo(pts[0],pts[1], ptj[0], ptj[1], ptk[0],ptk[1]);
    			break;

Klas freehand:
 package slikar;
    
    import android.graphics.Matrix;
    import android.graphics.Path;
    
    public class FreeHand extends Shape{
    	private Point begin;
    	 private Point sredina;
    	private Point end;
        Matrix inverzniMatrix;
        public FreeHand(){
        	super();
        	begin = new Point();
        	sredina= new Point();
        	end = new Point();	
        }
        public FreeHand(Point begin_point,Point sredina_point, Point end_point){
        	super();
    	    begin = begin_point;
    	    sredina= sredina_point;
    	    end = end_point;
    
        //path_of_shape.moveTo(begin.getX(), begin.getY());
        //path_of_shape.lineTo(end.getX(),end.getY());
        }
        
        public void setPath(Path path){
        	path_of_shape = path;
        }
        
        public Point getBegin(/*Matrix imageMatrix*/){
        	return begin/*(inverzniMatrix.invert(imageMatrix))*/;
        }
        public Point getSredina()
        {
        	return sredina;
        	
        }
        
        public Point getEnd(/*Matrix imageMatrix*/){
        	return end/**(inverzniMatrix.invert(imageMatrix))*/;
        }
        public void setBegin(Point _begin){
        begin = _begin;	
        }
        public void setSredina(Point _sredina){
        sredina = _sredina;	
        }    
        public void setEnd(Point _end){
        	end = _end;
        }
    }


 

drola ::

Kubična Bezierova krivulja je definirana s 4 točkami. Zadnji .moveTo() ki ga kličeš pred .cubicTo(), sprejme koordinate prve točke. V tvojem primeru je videti, da koordinate iste točke uporabiš v obeh klicih, zato imaš en del krivulje potem bolj raven.
https://drola.si

messi ::

Fora ni v ravnini, fora je v krivulji, da jo sploh jas nisem naredil, da se je sama, jaz sem potegnil ravno črto, nastala je ta čudna kirvulja :S


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Programiranje problem android

Oddelek: Programiranje
51173 (938) g333kk
»

Android zamenjava pogledov

Oddelek: Programiranje
61079 (900) c00L3r
»

glede CorelDrawa

Oddelek: Programska oprema
121426 (1249) msenjur
»

graf oblikovanje-kaj sploh?

Oddelek: Programska oprema
162133 (1851) tratto
»

adobe web collection4 vs. macromedia mx

Oddelek: Izdelava spletišč
61079 (1008) Ziga Dolhar

Več podobnih tem