diff options
author | randomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64> | 2012-01-09 11:00:50 +0000 |
---|---|---|
committer | randomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64> | 2012-01-09 11:00:50 +0000 |
commit | a8a8dfb90d6a51ae369c042c95162f45754c7c4b (patch) | |
tree | 0e7a5f82febebe7129ebfb015f05b114064c39fd /tikzit/src/common/RegularPolyShape.m | |
parent | e1cf0babff63e670e0d550b4072c22649a117fa7 (diff) |
Move tikzit into "trunk" directory
git-svn-id: https://tikzit.svn.sourceforge.net/svnroot/tikzit/trunk@365 7c02a99a-9b00-45e3-bf44-6f3dd7fddb64
Diffstat (limited to 'tikzit/src/common/RegularPolyShape.m')
-rw-r--r-- | tikzit/src/common/RegularPolyShape.m | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/tikzit/src/common/RegularPolyShape.m b/tikzit/src/common/RegularPolyShape.m new file mode 100644 index 0000000..cd5858c --- /dev/null +++ b/tikzit/src/common/RegularPolyShape.m @@ -0,0 +1,70 @@ +// +// RegularPolyShape.m +// TikZiT +// +// Copyright 2011 Aleks Kissinger. All rights reserved. +// +// +// This file is part of TikZiT. +// +// TikZiT is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// TikZiT is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with TikZiT. If not, see <http://www.gnu.org/licenses/>. +// + +#import "RegularPolyShape.h" +#import "Node.h" +#import "Edge.h" +#import "util.h" + +@implementation RegularPolyShape + +- (id)initWithSides:(int)sides rotation:(float)rotation { + [super init]; + + float rad = 0.25f; + + NSMutableArray *nodes = [NSMutableArray arrayWithCapacity:sides]; + NSMutableArray *edges = [NSMutableArray arrayWithCapacity:sides]; + + float dtheta = (M_PI * 2.0f) / ((float)sides); + float theta = rotation; + int i; + float maxY=0.0f, minY=0.0f; + NSPoint p; + for (i = 0; i < sides; ++i) { + p.x = rad * cos(theta); + p.y = rad * sin(theta); + if (p.y<minY) minY = p.y; + if (p.y>maxY) maxY = p.y; + + [nodes addObject:[Node nodeWithPoint:p]]; + theta += dtheta; + } + + float dy = (minY + maxY) / 2.0f; + + for (i = 0; i < sides; ++i) { + p = [[nodes objectAtIndex:i] point]; + p.y -= dy; + [[nodes objectAtIndex:i] setPoint:p]; + [edges addObject:[Edge edgeWithSource:[nodes objectAtIndex:i] + andTarget:[nodes objectAtIndex:(i+1)%sides]]]; + } + + paths = [[NSSet alloc] initWithObjects:edges,nil]; + return self; +} + +@end + +// vi:ft=objc:ts=4:noet:sts=4:sw=4 |