是否有 CGPath 的替代方案可以计算给定位置路径上的点?

2024-02-20

对于动画计时算法,我需要提供一条路径作为曲线。可能是两端都有控制点的贝塞尔曲线。

问题是似乎不可能计算 CGPath 上的点,因为 CGPathRef 是不透明的。 Apple 也没有提供计算路径上的点的机制。

是否有一个库或实用程序类可以计算贝塞尔曲线或路径上的点,对于给定位置(例如路径中间的 0.5)?

或者让我重新表述一下:如果 CGPath / CGPathRef 使这变得不可能,因为它是不透明的,并且如果您只关心贝塞尔曲线,那么有没有办法计算沿路径的位置点?


贝塞尔路径背后的数学实际上是“只是”:

start⋅(1-t)3 + 3⋅c1⋅t(1-t)2 + 3⋅c2⋅t2(1-t) + end⋅t3

This means that if you know, the start, the end and both control points (c1 and c2), then you can calculate the value for any t (from 0 to 1).

如果值是点(如下图所示),那么您可以分别对 x 和 y 进行这些计算。

这是形式我对贝塞尔路径的解释在这里 http://ronnqvi.st/thinking-like-a-bzier-path/当滑块变化时更新橙色圆圈的代码(在 JavaScript 中)就是这样(翻译成 Objective-C 或简单的 C 应该不会太难,但我太懒了):

var sx = 190; var sy = 80; // start
var ex = 420; var ey = 250; // end

var c1x = -30; var c1y = 350; // control point 1
var c2x = 450; var c2y = -20; // control point 2

var t = (x-minSliderX)/(maxSliderX-minSliderX); // t from 0 to 1

var px = sx*Math.pow(1-t, 3) + 3*c1x*t*Math.pow(1-t, 2) + 3*c2x*Math.pow(t,2)*(1-t) + ex*Math.pow(t, 3);
var py = sy*Math.pow(1-t, 3) + 3*c1y*t*Math.pow(1-t, 2) + 3*c2y*Math.pow(t,2)*(1-t) + ey*Math.pow(t, 3);
// new point is at (px, py)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有 CGPath 的替代方案可以计算给定位置路径上的点? 的相关文章

  • 使用 ZBarSDK 时 iPhone 相机失去自动对焦功能

    我正在开发一个应用程序 用户可以选择是否要扫描条形码或拍摄某物的照片 为了拍照 我正在使用UIImagePickerController照常 为了扫描条形码 我使用 ZbarSDK 1 2ZBarReaderViewController 拍
  • 在球体边缘绘制点

    因此 来自 Flash 背景的我对一些简单的 2D 三角函数有很好的理解 在带有 I 圆的二维中 我知道使用给定角度和半径将项目放置在边缘上的数学 x cos a r y sin a r 现在 如果我在 3d 空间中有一个点 我知道球体的半
  • 如何在 iOS 上固定证书的公钥

    在提高我们正在开发的 iOS 应用程序的安全性时 我们发现需要对服务器的 SSL 证书 全部或部分 进行 PIN 操作以防止中间人攻击 尽管有多种方法可以做到这一点 但当您搜索此内容时 我只找到了固定整个证书的示例 这种做法会带来一个问题
  • cordova插件条码扫描仪打不开扫描

    我的条形码扫描仪插件有问题 我不是天才 我不太了解如何编写网络应用程序 我使用phonegap和cordova 并且尝试制作一个网络应用程序 在单击链接后扫描条形码 我之前已经使用此命令行安装了该插件 cordova plugin add
  • 在 Blackberry 4.2 JDE 上调用 atan 函数

    我需要从我的 Blackberry Java 应用程序计算反正切值 不幸的是 blackberry 4 2 api 没有 Math atan 函数 Blackberry JDE 4 6 版有此功能 但 4 2 版没有 有谁知道计算 atan
  • UILabel UILongPressGestureRecognizer 不起作用?

    我怎样才能得到UILongPressGestureRecognizer在 uilabel 当我实现以下代码时 它不会调用该函数 那么请告诉我我做错了什么 UILongPressGestureRecognizer longPress UILo
  • 子类 PFObject 上的 PFUser 属性

    我使用以下类 动态属性以及 m 文件中的 load 和 parseClassName 方法 对 PFObject 进行了子类化 interface DAOpponents PFObject
  • Socket.io 400(错误请求)

    我的服务器上有这段代码 var express require express var routes require routes var user require routes user var http require http var
  • iOS 上的 OpenCV - VideoCapture 属性始终返回 1

    我一直在尝试构建一个简单的 OpenCV iOS 应用程序 该应用程序从捆绑包中加载视频并查询其帧数 持续时间等 然后它将尝试从中获取各个帧 不幸的是 当我使用VideoCapture类中 所有属性返回值 1 然后我尝试导航到frame 1
  • 在 hooks 文件夹中使用节点脚本时,cordova 插件安装问题

    Cordova 3 4 hooks 未在 iOS 中正确安装提到的插件 我正在添加install plugins js进入文件夹project project root hooks after platform add其中有以下代码 usr
  • 从 NavigationController 中删除 ViewController 后 AVPlayer 继续播放

    因此 我在项目中使用 ARC 当我添加 AVPlayerLayer 时 它工作得很好 但当我从 UINavigationItem 中弹出 UIViewController 时 视频继续在后台播放 有谁知道你会如何处理这个问题 这似乎是一件很
  • 对于使用 CCCrypt() 的 AES128,密钥可以长于 128 位吗?

    我正在使用CCCrypt https developer apple com library archive documentation System Conceptual ManPages iPhoneOS man3 CCCrypt 3c
  • 重叠的装载机圆

    我试图重现苹果为应用程序 活动 制作的重叠圆圈 见下图 如果您使用标准贝塞尔路径 起始 结束位置将仅在 0 到 2PI 之间产生影响 例如 如果您尝试填充 4PI 即使使用一些阴影 则无法模拟重叠加载 如何制作类似于苹果解决方案的东西来创建
  • 如何确定 NSTimeInterval 是否发生在任意 NSDate 期间?

    我有一个 NSTimeInterval 我想知道该时间戳是否位于日期的开始和结束之间 基本上我需要能够做类似的事情 NSDate today NSDate date NSTimeInterval myInterval someInterva
  • 在 iOS 中使用 FB SDK 是否需要 Facebook 的成功审核?

    现在我需要使用Facebook SDK来自我的 iOS 应用程序中的 Facebook 所以我填写了有关我的应用程序的信息developer facebook com应用程序详细信息 但是 当我用我的设备测试我的应用程序时 我可以发布到 F
  • 通过 renderInContext 定位要绘制的视图:

    我想画一个UIView在我目前的CGGraphicsContext 我画的是UIView via renderInContext 但它的位置不正确 始终位于左上角 我拥有所有的价值观UIView可用于绘制UIView CGRect fram
  • NSTimer 不触发选择器

    在带有 ARC 的 ios5 0 中 在我的 rootviewcontroller 中 我调用由应用程序委托持有的安全管理器对象中的方法 在该方法中 我设置计时器如下 NSTimer timer NSTimer scheduledTimer
  • 可以获取位置,但无法获取航向

    我目前只使用模拟器 但我在 iOS 模拟器上快速使用 CoreLocation 时遇到问题 我得到此代码打印的位置更新 但从未得到标题 我不想当然 我正在尝试制作一个指南针类型的应用程序 它将显示目标的方位 class CompassVie
  • NSCFData fastCharacterContents 崩溃? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我目前在控制台中收到此崩溃日志 20
  • iOS 电池监控 Swift

    我已将监控设置为启用 但模拟器和设备中的电池电量仍然为 1 UIDevice currentDevice batteryMonitoringEnabled true var level UIDevice currentDevice batt

随机推荐

  • Google Colab 脚本抛出“传输端点未连接”

    我无法使用任何 bash 命令Google Colab脚本 它让我 Transport endpoint is not connected 该问题仅发生在已安装的 gdrive 中 我正在使用google drive ocamlfuse 例
  • 向不同的操作提交相同的表单

    取决于哪个submit用户选择的按钮 Cat and Dog在本例中 我想使用正确的 http 动词将表单提交到正确的控制器操作 在本例中 只有一个文本输入 如果用户按下Cat我想POST to Cats create and if Dog
  • 如何将 tumblr 中的横幅链接到另一个网站?

    我正在尝试将我的 tumblr 博客中的横幅链接到另一个网站 我不知道该怎么做 以下是我在自定义 html 选项卡中找到的代码 但我似乎无法使我的横幅可点击 我到底应该在哪里添加链接的网站地址 任何帮助将不胜感激 div class blo
  • Io异常:网络适配器无法建立连接

    我正在使用 tomcat 应用程序服务器并连接到 Oracle DB 有一个文件叫ojdbc14 10g jar在项目中 在 jsp 页面中 我打开与数据库的连接并获取一些信息 但是 当我刷新页面时 我多次收到以下错误 java sql S
  • Laravel 重写引导模板

    因此 我在项目中添加了自定义 app css 并且使用引导模板 现在 当我在 app css 中创建新的按钮样式时 它可以在任何地方访问 因为我获得了主模板 并且其他页面正在扩展它 所以在每个页面上 但是当我在 app css 中覆盖引导主
  • android.support.v7.app.MediaRouteButton 不显示

    这是我的布局
  • 如何在pygame中将三角形旋转一定角度?

    我需要在屏幕中心旋转一个三角形 不是图像 我看到其他人回答了这个问题 但三角形不能指向上方 我尝试过使用其他人的功能 但他们认为只能部分工作 就像我上面提到的功能一样 import pygame disp pygame display se
  • 正则表达式性能:Boost 与 Perl [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 perl 和 boost 正则表达式之间的性能比较 我需要设计一段非常依赖正则表达式的代码
  • WPF:如何以原始尺寸显示图像?

    我在 WPF 中显示图像时遇到问题 这是我的代码
  • 以编程方式更改布局的前景色

    我想更改线性布局的前景色 这是我的代码 layout setForeground new ColorDrawable getResources getColor R color svbackclr 但是这个调用需要最低 api 级别 23
  • SQL 关键字“ISABOUT”[已弃用?] 应该替换为什么?

    在 MS SQL 全文搜索中 我在查询中使用 ISABOUT 例如 这应该返回前 10 名ProductIDs PK 与RANK领域在ProductDetails Table SELECT FROM CONTAINSTABLE Produc
  • 连接浏览器和广告商而不在多点连接中显示警报消息

    目前我正在探索多点连接框架 我的应用程序广告商和浏览器中有 2 个选项 因此 当用户在一台设备上启动浏览器 而在另一台设备上启动广告商时 他们应该能够找到彼此 当该设备出现在浏览器中并且用户点击它时 将向拥有广告设备的用户显示警报 允许他们
  • 角度测试台覆盖模块不工作

    当对测试夹具使用以下配置时 我收到关于找不到标签的抱怨 替换为MockSelectionToolComponent直接在AppModule工作正常 所以一定是别的东西 Add the imported module to the impor
  • MySQL服务器消失了

    我在 MySql 服务器上执行此查询 它给出了 MySQL 服务器已消失 错误 在下面的查询中 我的两个表都有超过 1000000 行 SELECT a tab 11 10 url as url a tab 11 10 c5 as t1 a
  • 如何比较两个雄辩的集合并从另一个集合中删除其中的内容?

    我有所有门的集合 以及当前用户有权访问的门的集合 如何比较两者并从所有门集合中删除用户已有权访问的门 doors Door orderBy name asc gt get users doors user gt doors 这是两个集合 U
  • 删除或禁用 RAP/RCP EditorPart 上显示的“X”关闭按钮

    我正在开发一个显示 ViewPart 和 EditorPart 的 RAP 应用程序 我试图找到一种方法来防止 所有 编辑器部分关闭 有没有办法删除或禁用 编辑器部分显示的 X 关闭按钮 你可以这样做 我写的大致相同 例如 http wik
  • 如何启用即席分布式查询

    当我运行查询时OPENROWSET在 SQL Server 2000 中它可以工作 但 SQL Server 2008 中的相同查询会生成以下错误 SQL Server 阻止了对组件 临时分布式查询 的语句 OpenRowset OpenD
  • 动态 Telerik RadOutlookBar 标题与 ItemTemplate 出现错误

    我正在尝试以 MVVM 方式使用 Telerik RadControls 但遇到了一些奇怪的问题 RadOutlookBar 背后的 Viewmodel 有一个 ViewModel 集合 每个 ViewModel 都有一个 Title 字符
  • 如何播放本地文件中的音频?

    我想播放下载的本地音频文件 但它不播放 class AVPlayerService static let instance AVPlayerService private var audioPlayer AVPlayer public we
  • 是否有 CGPath 的替代方案可以计算给定位置路径上的点?

    对于动画计时算法 我需要提供一条路径作为曲线 可能是两端都有控制点的贝塞尔曲线 问题是似乎不可能计算 CGPath 上的点 因为 CGPathRef 是不透明的 Apple 也没有提供计算路径上的点的机制 是否有一个库或实用程序类可以计算贝