Jump to content
php.lv forumi
  • 0

[SOLVED] javascript zīmēt un iegūt punktus


Question

Sveiki,

 

man ir kods, kuršs zīmē peles kustības un mans uzdevums ir noķert punktus kur pele mainijusi virzienu.

Tam visam noteikti ir kāds smalks un vienkāršs risinājums. Varbūt variet palīdzēt ?

 

Klients nospiežot peli un velkot to pa ekrānu piepilda masīvu ar koordinātēm

Array X (
371,375,377,379,379,380,381,382,384,385,387,388,388,388,388
)
Array Y (
208,210,212,213,214,212,212,211,207,205,203,202,201,204,205
)

 

šīs koordinātes veido līniju uz leju pa labi, un uz augšu pa labi.

Mani interesē, kā iegūt punktu kurā mainīts virziens.

 

Paldies.

Edited by EdgarsA
Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Ja ir kustība kaut kādā konkrētā virzienā, tad x/y koordinātes mainās, tas ir, pieaug vai samazinās.

attalums = prev_x - now_x

Ja attāluma zīme ir mainījusies no iepriekšējā stāvokļa kaut kādā momentā, tad virziens ir mainījies...

 

Tā es to saprotu...

Edited by briedis
Link to post
Share on other sites
  • 0

nja, ideja jau arī man bija skaidra šādā veidā. bet -

 

 

sāku 100x100, dodos pa labi uz augsu

 

101x99

102x98

102x97

102x96

103x95

103x94

104x94

105x94

 

redzi kā man roka raustās, bet man nepieciešamie punkti būtu vajadzīgi tur kur tiešām leņķis krasi mainās, varbūt kādam ir kāda matemātiskā formula prātā ?

Link to post
Share on other sites
  • 0

Ja x vai y koordināte no vienas izmaiņas uz otru pamainījusies mazāk par 5px (vai citu skaitli), tad ignorē šo izmaiņu. Tik šo dari, nevis starp katriem blakus esošiem punktiem, bet ik pa vairākam izlaižot.

Link to post
Share on other sites
  • 0

:) hehey, sanāca - paldies par palīdzību, kā jau vienmēr iedošu arī savu kodu, bet lūdzu nepiesienamies :) centos pēc iespējas ātrāk uzrakstīt.

Ja ir varianti palabojam.

 

var Draw = new Object;
Draw.xList = new Array(100,101,102,103,104,105,105,105,106,107,108,109,110,111,112,113,114,115,116,116,117,118,119,120);
Draw.yList = new Array(100,101,102,103,104,105,105,105,106,107,108,109,110,111,112,113,114,115,116,116,117,118,119,120);
function cookSomePoints(){
	$("#draw").html('<div id="preview1"></div>');
	var Xs = Draw.xList.split(",");
	var Ys = Draw.yList.split(",");
	var now = 0;
	var past_x = 0;
	var past_y = 0;
	var points='';
	for(i=0;i<Xs.length;i++){
		if(now == 0){
			Draw.tmpx = Xs[i]-past_x;
			Draw.tmpy = Ys[i]-past_y;
			Draw.tmpx1 = past_x-Xs[i];
			Draw.tmpy1 = past_y-Ys[i];
			Draw.tmpx = Draw.tmpx.toString();
			Draw.tmpx1 = Draw.tmpx1.toString();
			Draw.tmpy = Draw.tmpy.toString();
			Draw.tmpy1 = Draw.tmpy1.toString();
			Draw.tmpx = Draw.tmpx.replace("-","");
			Draw.tmpxq = Draw.tmpx1.replace("-","");
			Draw.tmpy = Draw.tmpy.replace("-","");
			Draw.tmpy1 = Draw.tmpy1.replace("-","");
			Draw.tmpx = new Number(Draw.tmpx);
			Draw.tmpx1 = new Number(Draw.tmpx1);
			Draw.tmpy = new Number(Draw.tmpy);
			Draw.tmpy1 = new Number(Draw.tmpy1);
			if((Draw.tmpx>10&&Draw.tmpy>10)||(Draw.tmpx1>10&&Draw.tmpy1>10)){
				points += (points==''?'':',')+Xs[i]+':'+Ys[i];
				past_x = Xs[i];
				past_y = Ys[i];
			}
		}
		now++;
		if(now==4){ now=0; }
	}
	Draw.Points = points;
}

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...