{"id":4354,"date":"2018-07-28T23:07:38","date_gmt":"2018-07-28T15:07:38","guid":{"rendered":"http:\/\/www.bookcard.net\/wordpress\/?p=4354"},"modified":"2018-08-24T19:51:54","modified_gmt":"2018-08-24T11:51:54","slug":"android_game_2d_vector","status":"publish","type":"post","link":"https:\/\/www.bookcard.net\/wordpress\/android_game_2d_vector\/","title":{"rendered":"Android\u904a\u6232\u4e4b2D\u77e2\u91cf"},"content":{"rendered":"<figure id=\"attachment_4355\" aria-describedby=\"caption-attachment-4355\" style=\"width: 1200px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/07\/Android_Game_2D_Vector.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4355\" src=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/07\/Android_Game_2D_Vector.jpg\" alt=\"\" width=\"1200\" height=\"800\" srcset=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/07\/Android_Game_2D_Vector.jpg 1200w, https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/07\/Android_Game_2D_Vector-300x200.jpg 300w, https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/07\/Android_Game_2D_Vector-768x512.jpg 768w, https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/07\/Android_Game_2D_Vector-1024x683.jpg 1024w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><figcaption id=\"caption-attachment-4355\" class=\"wp-caption-text\">Android\u904a\u6232\u4e4b2D\u77e2\u91cf<\/figcaption><\/figure>\n<p>\u300e\u77e2\u91cf\u300fVector\u4e5f\u7a31\u300e\u5411\u91cf\u300f\u5b83\u5176\u5be6\u662f\u300e\u62bd\u8c61\u91cf\u300f.\u5b83\u53ef\u4ee5\u6709\u591a\u7a2e\u89e3\u6790\u5982\u300e\u4f4d\u7f6e\u300f\u300e\u901f\u5ea6\u300f\u300e\u52a0\u901f\u5ea6\u300f\u300e\u65b9\u5411\u300f\u300e\u8ddd\u96e2\u300f.\u56e0\u70ba\u7528\u65bc2D\u904a\u6232\u958b\u767c\u5b9a\u7fa92D\u300e\u77e2\u91cf\u300f<\/p>\n<p>public class VECTOR2D {<\/p>\n<p>\u6d6e\u9ede\u6578\u5132\u5b582D\u77e2\u91cf<\/p>\n<p>public float x,y;<\/p>\n<p>\u89d2\u5ea6\u8f49\u5f27\u5ea6<\/p>\n<p>public static float DEGREES_TO_RADIANS = ((1.0f\/180.0f)* (float)Math.PI);<\/p>\n<p>\u5f27\u5ea6\u8f49\u89d2\u5ea6<\/p>\n<p>public static float RADIANS_TO_DEGREES = ((1.0f\/(float)Math.PI)*180.0f);<\/p>\n<p>\u8cfc\u9020\u51fd\u5f0f\u521d\u6b64\u70ba0<\/p>\n<p>public VECTOR2D(){<\/p>\n<p>x=y=0;<\/p>\n<p>}<\/p>\n<p>\u8cfc\u9020\u51fd\u5f0f\u4e26\u8a2d\u5b9ax\u8207y<\/p>\n<p>public VECTOR2D(float x,float y){<\/p>\n<p>this.x = x;<\/p>\n<p>this.y = y;<\/p>\n<p>}<\/p>\n<p>\u8fd4\u56de\u65b02D\u300e\u77e2\u91cf\u300f\u62f7\u8c9d<\/p>\n<p>public VECTOR2D Copy(){<\/p>\n<p>VECTOR2D v;<\/p>\n<p>v=new VECTOR2D(x,y);<\/p>\n<p>return v;<\/p>\n<p>}<\/p>\n<p>\u91cd\u8a2d2D\u77e2\u91cf<\/p>\n<p>public VECTOR2D set(VECTOR2D v){<\/p>\n<p>this.x = v.x;<\/p>\n<p>this.y = v.y;<\/p>\n<p>return this;<\/p>\n<p>}<\/p>\n<p>2D\u77e2\u91cf\u52a0\u6cd5<\/p>\n<p>public VECTOR2D Add(VECTOR2D v){<\/p>\n<p>this.x = this.x + v.x;<\/p>\n<p>this.y = this.y + v.y;<\/p>\n<p>return this;<\/p>\n<p>}<\/p>\n<p>2D\u77e2\u91cf\u6e1b\u6cd5<\/p>\n<p>public VECTOR2D Sub(VECTOR2D v){<\/p>\n<p>this.x = this.x &#8211; v.x;<\/p>\n<p>this.y = this.y &#8211; v.y;<\/p>\n<p>return this;<\/p>\n<p>}<\/p>\n<p>2D\u77e2\u91cf\u4e58\u6cd5\u7b49\u65bc\u5c0d\u77e2\u91cf\u9032\u884c\u7e2e\u653e.<\/p>\n<p>public VECTOR2D Mul(float scalar){<\/p>\n<p>this.x = this.x * scalar;<\/p>\n<p>this.y = this.y * scalar;<\/p>\n<p>return this;<\/p>\n<p>}<\/p>\n<p>\u8a08\u7b972D\u77e2\u91cf\u9577\u5ea6<\/p>\n<p>public float Len(){<\/p>\n<p>float len;<\/p>\n<p>len = (float) Math.sqrt(x<em>x+y<\/em>y);<\/p>\n<p>return len;<\/p>\n<p>}<\/p>\n<p>2D\u77e2\u91cf\u55ae\u4f4d\u5316,\u9577\u5ea6\u70ba1<\/p>\n<p>public VECTOR2D Normer(){<\/p>\n<p>float len;<\/p>\n<p>len = Len();<\/p>\n<p>if(len != 0) {<\/p>\n<p>x = x \/ len;<\/p>\n<p>y = y \/ len;<\/p>\n<p>}<\/p>\n<p>return this;<\/p>\n<p>}<\/p>\n<p>\u8a08\u7b972D\u77e2\u91cf\u89d2\u5ea6<\/p>\n<p>public float Angle(){<\/p>\n<p>float angle = 0;<\/p>\n<p>angle = (float)Math.atan2(y,x)*RADIANS_TO_DEGREES;<\/p>\n<p>if(angle&lt;0)<\/p>\n<p>angle += 360;<\/p>\n<p>return angle;<\/p>\n<p>}<\/p>\n<p>\u8a08\u7b97\u51692D\u77e2\u91cf\u89d2\u5ea6\u5728(0~360)\u5ea6\u4e4b\u9593<\/p>\n<p>public float Angle(VECTOR2D v){<\/p>\n<p>float angle = 0;<\/p>\n<p>float distanceX,distanceY;<\/p>\n<p>distanceX = this.x &#8211; v.x;<\/p>\n<p>distanceY = this.y &#8211; v.y;<\/p>\n<p>angle = (float)Math.atan2(distanceY,distanceX)*RADIANS_TO_DEGREES;<\/p>\n<p>if(angle&lt;0)<\/p>\n<p>angle += 360;<\/p>\n<p>return angle;<\/p>\n<p>}<\/p>\n<p>2D\u77e2\u91cf\u7e5e\u539f\u9ede\u65cb\u8f49, angle\u70ba\u65cb\u8f49\u89d2\u5ea6<\/p>\n<p>public VECTOR2D rotate(float angle){<\/p>\n<p>float rad = angle * DEGREES_TO_RADIANS; \/\/ \u89d2\u5ea6\u8f49\u5f27\u5ea6<\/p>\n<p>float cos = (float) Math.cos(rad);<\/p>\n<p>float sin = (float) Math.sin(rad);<\/p>\n<p>float newX = this.x * cos &#8211; this.y * sin;<\/p>\n<p>float newY = this.x * sin + this.y * cos;<\/p>\n<p>this.x = newX;<\/p>\n<p>this.y = newY;<\/p>\n<p>return this;<\/p>\n<p>}<\/p>\n<p>\u8a08\u7b97\u5169\u500b2D\u77e2\u91cf\u4e4b\u9593\u8ddd\u96e2<\/p>\n<p>public float Dist(VECTOR2D v){<\/p>\n<p>float distX = this.x &#8211; v.x;<\/p>\n<p>float distY = this.y &#8211; v.y;<\/p>\n<p>float dist = (float)Math.sqrt(distX*distX + distY * distY);<\/p>\n<p>return dist;<\/p>\n<p>}<\/p>\n<p>\u8a08\u7b97\u51692D\u77e2\u91cf\u4e4b\u9593\u8ddd\u96e2\u5e73\u65b9<\/p>\n<p>public float DistSquared(VECTOR2D v){<\/p>\n<p>float distX = this.x &#8211; v.x;<\/p>\n<p>float distY = this.y &#8211; v.y;<\/p>\n<p>float dist = distX*distX + distY * distY ;<\/p>\n<p>return dist;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u300e\u77e2\u91cf\u300fVector\u4e5f\u7a31\u300e\u5411\u91cf\u300f\u5b83\u5176\u5be6\u662f\u300e\u62bd\u8c61\u91cf\u300f.\u5b83\u53ef\u4ee5\u6709\u591a\u7a2e\u89e3\u6790\u5982\u300e\u4f4d\u7f6e\u300f\u300e\u901f\u5ea6\u300f\u300e\u52a0\u901f\u5ea6\u300f\u300e\u65b9\u5411\u300f\u300e\u8ddd\u96e2 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.bookcard.net\/wordpress\/android_game_2d_vector\/\" class=\"more-link\">\u7e7c\u7e8c\u95b1\u8b80 <span class=\"screen-reader-text\">Android\u904a\u6232\u4e4b2D\u77e2\u91cf<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[2],"class_list":["post-4354","post","type-post","status-publish","format-standard","hentry","category-android","tag-android","entry"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts\/4354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/comments?post=4354"}],"version-history":[{"count":4,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts\/4354\/revisions"}],"predecessor-version":[{"id":4459,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts\/4354\/revisions\/4459"}],"wp:attachment":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/media?parent=4354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/categories?post=4354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/tags?post=4354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}