我正在编写一个3d引擎,我遇到了DirectX文档中描述的LookAtalgorithm: zaxis = normal(At – Eye) xaxis = normal(cross(Up, zaxis)) yaxis = cross(zaxis, xaxis) xaxis.x yaxis.x zaxis.x 0 xaxis.y yaxis.y zaxis.y 0 xaxis.z yaxis.z zaxis.z 0 -dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) l 现在我知道它是如何工作在旋转的一面,但我不明白为什么它把matrix的翻译部分是那些点积。 仔细检查一下,似乎是根据新的基本vector投影到眼睛/相机的位置上来调整相机的位置。 问题是为什么需要这样做? 它完成了什么?
是否有可能使用JavaScript上传使用FacebookgraphicsAPI的文件,我觉得我很接近。 我正在使用下面的JavaScript var params = {}; params['message'] = 'PicRolled'; params['source'] = '@'+path; params['access_token'] = access_token; params['upload file'] = true; function saveImage() { FB.api('/me/photos', 'post', params, function(response) { if (!response || response.error) { alert(response); } else { alert('Published to stream – you might want to delete it now!'); } }); } 运行时,我收到以下错误… "OAuthException" – "(#324) Requires […]
对于我正在build设的应用程序,我画了2个圈子。 一个比另一个大一点。 我想在这些行之间曲线文本,为我正在build立一个圆形的菜单。 我阅读了大多数关于弯曲文本的东西,你必须将文本分解成字符,并且以正确的angular度(通过旋转你正在绘制的上下文)绘制每个字符。 我无法将自己的头围绕在如何为我的angular色find正确的angular度和位置上。 我包括了目前菜单的样子。 只有我添加的文本从UIImageView中的图像加载。 我希望有人能在某些方面给我一些起点,说明如何在白圈中画出文字。 编辑:好的,我目前在这一点上: 我通过使用以下代码完成: – (UIImage*) createMenuRingWithFrame:(CGRect)frame { CGRect imageSize = CGRectMake(0,0,300,300); float perSectionDegrees = 360 / [sections count]; float totalRotation = 90; char* fontName = (char*)[self.menuItemsFont.fontName cStringUsingEncoding:NSASCIIStringEncoding]; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, imageSize.size.width, imageSize.size.height, 8, 4 * imageSize.size.width, colorSpace, kCGImageAlphaPremultipliedFirst); CGContextSetTextMatrix(context, CGAffineTransformIdentity); CGContextSelectFont(context, fontName, 18, […]
在我的iPad应用程序中,我想制作一个占用屏幕大部分的UIView屏幕截图。 不幸的是,子视图是非常深的嵌套,所以需要很长的时间才能制作屏幕截图并在之后卷动页面。 有没有比“平常”更快的方法? UIGraphicsBeginImageContext(self.bounds.size); [self.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 如果可能的话,我想避免caching或重组我的观点。
我试图画出一些简单的graphics框架。 我也想能够调整我从我的主要方法绘制。 例如,设置要打印的stringvariables或矩形的坐标。 我似乎遇到的问题是,我可以设置类variables之前调用paintComponent方法。 我怎样才能改变这个代码,以便能够设置JPanel / JFramevariables之前,它画到屏幕? 谢谢 import java.awt.*; import javax.swing.*; public class Test { public static void main(String[] args) { FrameTest test_frame = new FrameTest(); test_frame.test_string = "I WANT TO DRAW THIS STRING"; } } class FrameTest extends JFrame{ private static final long serialVersionUID = 1L; String test_string; public FrameTest(){ this.test_string = "TEMP […]
请注意,我没有在Mac机上的Windows机器上testing过。 我不确定这是否也发生在Windows机器上… 当我调整我的Java应用程序的内容是不可见的。 我已经find了resize后修复它的方法,但不是在用户调整窗口大小的时候。 我没有使用Swing或其他东西,因为它使我的二进制文件变得如此缓慢(在我看来)。 结构是这样的: Frame我的主窗口 Containe r main-window内容视图 基于Container的子视图,包括paint(Graphics g) – 方法 我已经将所有侦听器添加到“ My main-window ,现在我可以在调整窗口大小后重新绘制内容视图 。 public void componentResized(ComponentEvent e) { this.contentView.paint(this.contentView.getGraphics()); } 我小心使用paint(getGraphics())方法 – 方法不是一个很好的方法来做到这一点,但由于repaint()方法根本没有做任何事情,这是唯一的工作可能性。 在resize时,所有绘制的内容变得不可见。 但是,当我添加一个Button实例到我的Content-view并调整我的Main-window ,button不会看不见。 我能够追踪“活”resize事件: public void componentMoved(ComponentEvent e) { System.out.println("Live-resize"); } 当我开始resize这个方法不被调用。 resize时,会在我的日志中生成“实时resize”每一个像素我调整窗口的大小。 当我停止resize这个方法不被调用,componentResized方法。 当我将重绘方法(或重绘方法)添加到这样的“活”resize事件时,我仍然得到输出,但是,它不是重绘或某事 public void componentMoved(ComponentEvent e) { System.out.println("Live-resize"); this.contentView.paint(this.contentView.getGraphics()); } 要么 public void […]
假设我想更新一个新的数据的情节。 我应该select什么方法? 将XDataSource属性设置为某个名称,更新该variables并调用refreshdata 擦除原始plot ,然后再次调用plot命令。 使用Set('Xdata',…')
原来的问题……………………………………….. 如果您是drawRect的高级用户,您将会知道当然在“所有处理完成”之前,drawRect才会真正运行。 setNeedsDisplay将视图标记为无效的操作系统,并基本上等待,直到所有的处理完成。 这可以在你想要的普通情况下生气: 视图控制器1 启动一些function2 增量式3 创造出越来越复杂的艺术作品 在每一步,你setNeedsDisplay(错!)5 直到所有的工作完成6 当然,当你做上述1-6时,所发生的只是在第6步之后,drawRect 才运行一次 。 您的目标是在第5点刷新视图。该怎么办? 解决原来的问题……………………………………… 。 总而言之,你可以(A)背景大型的绘画,并调用前景的UI更新或(B)争论有争议的有四个“立即”方法build议不要使用后台进程。 对于什么工作的结果,运行演示程序。 它有#定义所有五种方法。 汤姆·斯威夫特(Tom Swift)介绍的真正惊人的替代解决scheme……………… 汤姆·斯威夫特(Tom Swift)解释了简单地操作运行循环的奇妙想法。 以下是您如何触发运行循环: [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate date]]; 这是一个真正令人惊叹的工程。 当然,在操作运行循环时应该非常小心,许多人指出这种方法对于专家来说是严格的。 奇异的问题……………………………………… 。 尽pipe有许多方法可行,但实际上它们并不“起作用”,因为在演示中会看到一个奇怪的渐进式减速神器。 滚动到下面粘贴的“答案”,显示控制台输出 – 你可以看到它是如何逐渐减慢。 这是新的SO问题: 运行循环/ drawRect中的神秘的“渐进式减速”问题 这里是演示应用程序的V2 … http://www.fileswap.com/dl/p8lU3gAi/stepwiseDrawingV2.zip.html 你会看到它testing所有五种方法, #ifdef TOMSWIFTMETHOD [self setNeedsDisplay]; [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate date]]; #endif #ifdef […]
其实我有两个问题: 在位图上绘制图像还是创build一个位图作为资源然后通过位图绘制它会更好吗? performance明智…哪一个更好? 如果我想在位图上绘制透明的东西,我该如何去做呢? 如果我想叠加一个透明的位图,我该怎么做? 对不起,长长的名单,但为了学习的兴趣,我想探索两种方法…
我目前正在使用贝塞尔曲线和曲面绘制着名的犹他州茶壶。 使用16个控制点的Bezier补丁,我已经能够绘制茶壶,并使用“旋转照相机”function来显示茶壶,这个function可以旋转生成的茶壶,目前我正在使用正交投影。 其结果是我有一个“平坦的”茶壶,这是预期的正射投影的目的是保持平行线。 不过,我想用一个透视投影来给茶壶深度。 我的问题是,如何将从“world到camera”函数返回的3D xyz顶点转换为2D坐标。 我想在z = 0时使用投影平面,并允许用户使用键盘上的箭头键确定焦距和图像大小。 我正在用java进行编程,并设置了所有的input事件处理程序,并且还编写了一个处理基本matrix乘法的matrix类。 我一直在阅读维基百科和其他资源一段时间,但我不能完全掌握如何执行这种转变。