参考:维基百科-投影
PA 就是A的列空间的投影矩阵。比如A=[Vec1,Vec2],其中Vec1、Vec2都是列向量,向量b在A空间内的投影就是PA*b。
再通俗一点,A是一个平面,知道A里边的两个不平行的向量Vec1、Vec2,求任意一个向量b在平面A上的投影。
对于一维,就是,知道一个向量A,求向量b在A上的投影。
做了个demo:
效果:
代码:
package { import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Point; public class Main extends MovieClip { public var pO:MovieClip; public var pA:MovieClip; public var pB:MovieClip; public function Main() { // constructor code drag(pO); drag(pA); drag(pB); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function enterFrameHandler(e:Event):void { var p0:Point = new Point(pO.x, pO.y); var p1:Point = new Point(pA.x, pA.y); var p2:Point = new Point(pB.x, pB.y); var p01:Point = p1.subtract(p0); var p02:Point = p2.subtract(p0); var A:Point = p02; var b:Point = p01; // // graphics.clear(); graphics.lineStyle(4, 0x000000, 1.0); graphics.moveTo(p0.x, p0.y); graphics.lineTo(p1.x, p1.y); graphics.moveTo(p0.x, p0.y); graphics.lineTo(p2.x, p2.y); graphics.lineStyle(2, 0x000000, 1.0); graphics.moveTo(p0.x + b.x, p0.y + b.y); graphics.lineTo(p0.x + pb.x, p0.y + pb.y); graphics.lineStyle(2, 0xff0000, 1.0); graphics.moveTo(p0.x, p0.y); graphics.lineTo(p0.x + pb.x, p0.y + pb.y); } //----------------------------- private var curSp:Sprite; private function drag(sp:Sprite):void{ sp.buttonMode = true; sp.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); } private function mouseDownHandler(e:MouseEvent):void { curSp = e.currentTarget as Sprite; curSp.startDrag(); addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); addEventListener(Event.MOUSE_LEAVE, mouseUpHandler); } private function mouseUpHandler(e:MouseEvent):void { curSp.stopDrag(); curSp = null; removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); removeEventListener(Event.MOUSE_LEAVE, mouseUpHandler); } private function mouseMoveHandler(e:MouseEvent):void { // } } }
可以用于求点到线段上的垂线。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。