root/as3/snapfit/trunk/src/snapfit/shape/PathLine.as

リビジョン 2161, 1.8 kB (コミッタ: nutsu, コミット時期: 3 年 前)

パス上の長さから位置だしとか

Line 
1 package snapfit.shape
2 {
3         /**
4         * ...
5         * @author nutsu
6         */
7         public class PathLine implements IPath
8         {
9                 //start point
10                 private var _x0:Number;
11                 private var _y0:Number;
12                
13                 //end point
14                 private var _x1:Number;
15                 private var _y1:Number;
16                
17                 //length
18                 private var _length:Number;
19                
20                
21                 public function PathLine( x0:Number, y0:Number, x1:Number, y1:Number )
22                 {
23                         _x0 = x0;
24                         _y0 = y0;
25                         _x1 = x1;
26                         _y1 = y1;
27                         _length = -1;
28                 }
29                
30                 public function clone():PathLine
31                 {
32                         return new PathLine( _x0, _y0, _x1, _y1 );
33                 }
34                
35                 public function f( t:Number ):PathPoint
36                 {
37                         return new PathPoint( _x0 + ( _x1 - _x0 ) * t, _y0 + ( _y1 - _y0 ) * t );
38                 }
39                
40                 public function diff( t:Number ):PathPoint
41                 {
42                         return new PathPoint( ( _x1 - _x0 ), ( _y1 - _y0 ) );
43                 }
44                
45                 public function vector( t:Number ):PathVector
46                 {
47                         return new PathVector( _x0 + ( _x1 - _x0 ) * t, _y0 + ( _y1 - _y0 ) * t, ( _x1 - _x0 ), ( _y1 - _y0 ) );
48                 }
49                
50                 public function lengthToPoint( len:Number ):PathPoint
51                 {
52                         return f( lengthToValue( len ) );
53                 }
54                
55                 public function lengthToValue( len:Number ):Number
56                 {
57                         return len/length;
58                 }
59                
60                 public function get length():Number
61                 {
62                         return Math.sqrt( ( _x1 - _x0 ) * ( _x1 - _x0 ) + ( _y1 - _y0 ) * ( _y1 - _y0 ) );
63                 }
64                
65                 public function get x0():Number{ return _x0; }
66                 public function set x0(v:Number):void
67                 {
68                         _x0 = v; _length = -1;
69                 }
70                
71                 public function get y0():Number{ return _y0; }
72                 public function set y0(v:Number):void
73                 {
74                         _y0 = v; _length = -1;
75                 }
76                 public function get x1():Number{ return _x1; }
77                 public function set x1(v:Number):void
78                 {
79                         _x1 = v; _length = -1;
80                 }
81                
82                 public function get y1():Number{ return _y1; }
83                 public function set y1(v:Number):void
84                 {
85                         _y1 = v; _length = -1;
86                 }
87         }
88        
89 }
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。