我们正在将GLPaint示例用于新应用。 我们希望向用户演示绘制少量对象的方法。 我们看到苹果GLPaint有一个关于如何回放图纸数据的例子。
所以我们设法提供了我们自己的数据,除了让它倒置的问题之外,它还能很好地工作。
当提供的点数是 -
它将绘制
有一个简单的解决方案吗?
谢谢,Shani
答案 0 :(得分:2)
iPhone坐标系向上读取,而openGL使用笛卡尔系统。因此,openGL中的所有绘图都将颠倒在iPhone上。在渲染时尝试颠倒图像。
答案 1 :(得分:0)
感谢Ginamin
帮了很多忙。 听起来他们应该制作某种功能来翻转坐标。
我这样做了 - 1.找到y坐标中的最高点和最低点。 2.将每个y点乘以-1,并为其添加最高+最低点。所以图像绘制正确。这是代码,如果它可以帮助任何人。
//points array for example
points = [[NSArray alloc] initWithObjects:
[NSValue valueWithCGPoint:CGPointMake(0, 0)],
[NSValue valueWithCGPoint:CGPointMake(0, 90)],
[NSValue valueWithCGPoint:CGPointMake(100, 90)],
[NSValue valueWithCGPoint:CGPointMake(100, 0)],
[NSValue valueWithCGPoint:CGPointMake(0, 0],
nil];
CGPoint point;
NSValue *val;
NSDictionary * dict;
NSMutableArray *yPoints =[[NSMutableArray alloc] initWithCapacity:[points count]];
for (int i=0; i<[points count]; ++i) {
val = [points objectAtIndex:i];
point = [val CGPointValue];
dict = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:point.y] forKey:@"y"];
[yPoints addObject:dict];
}
//sort the array by the y value
NSSortDescriptor * yDescriptor =
[[NSSortDescriptor alloc] initWithKey:@"y"
ascending:YES];
NSArray * descriptors =
[NSArray arrayWithObjects:yDescriptor, nil];
NSArray * sortedArray =
[yPoints sortedArrayUsingDescriptors:descriptors];
//get the first and last points from the sorted array
yFactorHighest = [[[sortedArray lastObject] objectForKey:@"y"] intValue];
yFactorlowst = [[[sortedArray objectAtIndex:0] objectForKey:@"y"] intValue];
[yDescriptor release];
[yPoints release];
和绘图功能 -
- (void) playback:(NSString*)letter
{
NSUInteger pointsCount = [points count]-1;
// Render the current path
val1 = [points objectAtIndex:p];
point1 = [val1 CGPointValue];
point1.y=-(p1.y)+yFactorHighest+yFactorlowst;
val2 = [points objectAtIndex:p+1];
point2 = [val2 CGPointValue];
point2.y=-(p2.y)+yFactorHighest+yFactorlowst;
[self renderLineFromPoint:point1 toPoint:point2];
p++;
if(p<pointsCount)
[self performSelector:@selector(playback:) withObject:@"a" afterDelay:0.1];
}
我是编程新手,所以我希望我的代码没有问题。 希望它会有所帮助
SHANI