草庐IT

iphone - Objective C 贝塞尔曲线 reshape

coder 2023-09-24 原文

我希望能够通过触摸并拖动它来重新定位和 reshape 在 Core Graphics 中绘制的三次贝塞尔曲线。我可以绘制基本形状,我可以使用触摸和拖动来移动整个形状,但这不是我想要的。

我想要的是能够移动和 reshape 贝塞尔曲线,就好像它是一根放在 table 上的绳子,被我的手指拉来拉去。即触摸贝塞尔曲线的一部分并将其拉向一个方向以改变整体曲线的形状。

有人知道怎么做吗?非常欢迎任何帮助。

提前致谢

最佳答案

绘制控制点并允许用户四处拖动它们相当容易。遗憾的是,曲线并未通过所有控制点,因此体验与您的建议不太相符。

要执行您的建议,您首先需要回答“用户是否触及曲线?”这个问题。这与“是曲线一定距离内的给定点”的问题相同。这不是一个微不足道的问题,但它是可以计算的。可能最简单的方法是只计算沿曲线的 X 点(其中 X 足够高以提供合理的精度),并检查每个点的距离。原则上,您也可以对距离方程求导并求解它的零点,但这需要迭代。根据我的经验,您可以足够快地计算出所需的 1000 个左右的距离(即使在 iPad 1 上),因此可能不值得额外的复杂性。

一旦您发现用户实际上正在触摸曲线,就很容易找出哪个控制点最近。此时最困难的事情是决定如何处理它。一些选项:

  • 在用户移动的方向上移动最近的控制点。您可能需要进行多次计算,直到找到一条通过触摸点的新曲线。这是最简单的方法,可能也是我要开始的地方。
  • 您可以在触摸点分割曲线并移动新创建的端点。 (请参阅 De Casteljau's 算法。)除非您调整其他控制点以创建匹配的斜坡,否则这将倾向于创建尖角。这允许更多的任意曲线,但可能很难知道用户真正想要什么。您几乎肯定还需要申请 Ramer-Douglas-Peucker以防止曲线数量激增。

我目前对 Objective-C 中的贝塞尔曲线问题很感兴趣。你可能对我的first post on the subject感兴趣.我在这方面的初步工作可在 GitHub 上找到。在iOS:PTL示例代码。希望这周我能再发一篇文章。您的特定问题很有趣,所以我可能会看到我可以围绕它构建什么。

关于iphone - Objective C 贝塞尔曲线 reshape ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9263235/

有关iphone - Objective C 贝塞尔曲线 reshape的更多相关文章

  1. 关于tensor的reshape操作 - 2

    先创建一个tensor>>>importtorch>>>a=torch.rand(1,4,3)        >>>print(a) tensor([[[0.0132,0.7809,0.0468],     [0.2689,0.6871,0.2538],     [0.7656,0.5300,0.2499],     [0.2500,0.4967,0.0685]]]) 分类进行reshape操作时,假如第二维代表类别,直接reshape使得数据对应结果会错>>>b=a.reshape(-1,4)>>>print(b) tensor([[0.0132,0.7809,0.0468,0.2689],

  2. iphone - 扩展 restful_authentication/AuthLogic 以支持匿名 iPhone 的延迟登录的最佳方法是什么? - 2

    我正在构建一个与RubyonRails后端对话的iPhone应用程序。RubyonRails应用程序还将为Web用户提供服务。restful_authentication插件是提供快速和可定制的用户身份验证的绝佳方式。但是,我希望iPhone应用程序的用户在新列中存储一个由手机的唯一标识符([[UIDevicedevice]uniqueIdentifier])自动创建的帐户。稍后,当用户准备好创建用户名/密码时,帐户将更新为包含用户名和密码,iPhone唯一标识符保持不变。用户在设置用户名/密码之前不能访问该网站。然而,他们可以使用iPhone应用程序,因为该应用程序可以使用它的标识符

  3. Ruby 曲线拟合(对数回归)包 - 2

    我正在寻找进行对数回归(对数方程的曲线拟合)的Rubygem或库。我试过statsample(http://ruby-statsample.rubyforge.org/),但它似乎没有我要找的东西。有人有什么建议吗? 最佳答案 尝试使用“statsample”gem。您可以使用类似的方法执行指数、对数、幂、正弦或任何其他变换。我希望这有帮助。require'statsample'#IndependentVariablex_data=[Math.exp(1),Math.exp(2),Math.exp(3),Math.exp(4),Ma

  4. Ruby/openssl:将椭圆曲线点八位字节字符串转换为 OpenSSL::PKey::EC::Point - 2

    我正在尝试编写Ruby代码来检查我发现的特定消息上的椭圆曲线数字签名算法(ECDSA)签名here.问题是我不知道如何将公钥的八位字节字符串转换为OpenSSL::PKey::EC::Point目的。如果我用C写这个,我会把八位字节字符串传递给OpenSSL的o2i_ECPublicKey,它做的事情接近我想要的,实际上被referenceimplementation使用.但是,我搜索了sourcecodeofRuby(MRI)而且它不包含对o2i_ECPublicKey的调用,所以我不知道如何在不编写C扩展的情况下使用Ruby中的该函数。这是十六进制的八位字节字符串。它只是一个0x0

  5. iphone - 设计和 Rails 3 中的 http 身份验证 - 2

    我有一个使用deviseonrails3的应用程序。我想启用http身份验证,以便我可以从iPhone应用程序向我的网络应用程序进行身份验证。如何从我的iPhone应用程序进行身份验证以进行设计?这安全吗?还是我应该进行不同的身份验证? 最佳答案 从设计的角度来看,您有3个选择:1)使用基本的http身份验证:您的iPhone应用程序有一个secretkey-这是在您的iPhone应用程序代码中烘焙的-用于对网络应用程序的每个请求进行身份验证。Google搜索:“设计基本的http身份验证”2)您可以通过在您的iPhone应用程序中

  6. iphone - 在没有 Mac 的情况下开发 iPhone 应用程序? - 2

    这个问题在这里已经有了答案:关闭13年前。PossibleDuplicates:HowcanIdevelopforiPhoneusingaWindowsdevelopmentmachine?我想为我妻子的手机构建一个iPhone应用程序,但我对购买Mac作为一次性工作的开发平台不感兴趣。应用程序:应该在iPhone上独立运行(即没有网络连接)完全可以接受使用iPhoneJavascript库之一创建的GUI会做一些数据库IO来读取和更新数据没有商业值(value),永远不会被任何人使用这是我的想法:越狱iPhone在iPhone上安装Ruby+Sinatra使用Sinatra编写应用程

  7. iphone - iPhone 原生应用的测试驱动设计 - 2

    我正在试验iPhoneSDK并在Nic博士的rbiPhoneTest项目中做一些TDD。我想知道有多少人(如果有的话)成功地使用了这个或任何其他iPhone/Cocoa测试框架?更重要的是,我想知道如何最好地断言专有的二进制请求/响应协议(protocol)。这个想法是通过网络发送二进制请求并接收二进制响应。请求和响应是使用byteand'ing和or'ing创建的。我正在使用黄金副本模式来测试我的请求。这是我到目前为止所拥有的。不要笑,因为我是ObjectiveC和Ruby的新手:requireFile.dirname(__FILE__)+'/test_helper'require'

  8. iphone - 如何从视频中提取方向信息? - 2

    在网络上浏览了大量文档后,iPhone似乎总是以480x360的纵横比拍摄视频,并在视频rails上应用变换矩阵。(480x360可能会改变,但对于给定设备而言始终相同)这是一种在iOS项目中修改ffmpeg源代码并访问矩阵http://www.seqoy.com/correct-orientation-for-iphone-recorded-movies-with-ffmpeg/的方法这是在iOS-4中查找转换矩阵的更清晰的方法Howtodetect(iPhoneSDK)ifavideofilewasrecordedinportraitorientation,orlandscape.

  9. javascript - 是否允许将javascript代码下载到iPhone - 2

    我有一个混合应用程序,它基本上是一个从UIWebview内的应用程序文件夹运行的网站。问题是我打算通过从互联网下载整个网站然后替换旧网站来更新我的网站。今天发现苹果现在提供了AppStoreReviewGuidelines等规则:2.7Appsthatdownloadcodeinanywayorformwillberejected2.8Appsthatinstallorlaunchotherexecutablecodewillberejected因为我的网站有html、css和javascript,这是否意味着我的应用程序将被拒绝或有机会被接受?你对此有何看法?

  10. javascript - 拖动以像在 iPhone 中一样使用 jQuery 更改图像幻灯片 - 2

    我正在为我的站点使用超大型jquery插件。它带有下一张和上一张幻灯片的按钮。我想在其中实现拖动更改功能。如果有人点击并将鼠标向右移动,它应该充当下一张幻灯片按钮。但是我如何使用jquery来实现呢?我怎么知道用户何时单击n向左/向右拖动http://buildinternet.com/project/supersized/ 最佳答案 jQuery将mouseUp、mouseDown和mouseMove识别为事件。您必须在mouseDown上捕获鼠标位置,在它移动时更新位置并将其与您最初捕获的位置进行比较。虽然这是高度理论化的,但请

随机推荐