如何自建网站做外贸做网站图片无法显示的原因

news/2025/9/22 22:00:50/文章来源:
如何自建网站做外贸,做网站图片无法显示的原因,可以做设计兼职的网站,网站关键字怎么修改说到贝塞尔曲线#xff0c;大家肯定都不陌生#xff0c;网上有很多关于介绍和理解贝塞尔曲线的优秀文章和动态图。以下两个是比较经典的动图了。二阶贝塞尔曲线#xff1a;三阶贝塞尔曲线#xff1a;由于在工作中经常要和贝塞尔曲线打交道#xff0c;所以简单说一下自己的…说到贝塞尔曲线大家肯定都不陌生网上有很多关于介绍和理解贝塞尔曲线的优秀文章和动态图。以下两个是比较经典的动图了。二阶贝塞尔曲线三阶贝塞尔曲线由于在工作中经常要和贝塞尔曲线打交道所以简单说一下自己的理解现在假设我们要在坐标系中绘制一条直线直线的方程很简单就是 yx 很容易得到下图现在我们限制一下 x 的取值范围为 0~1 的闭区间那么可以得出 y 的取值范围也是 0~1。而在 0~1 的区间范围内x 能取的数有多少个呢答案当然是无数个了。同理y 的取值个数也是有无数个。每一个 x 都有唯一的 y 与之对应一个 (x,y) 在坐标系上就是一个点。所以最终得到的 0~1 区间的线段实际上是由无数的点组成的。那么这条线段有多长呢长度是由 x 的取值范围来决定的若 x 的取值为 0~2那么线段就长了一倍。另外如果 x 的取值范围不是无数个而是以 0.05 的间距从 0 到 1 之间递增那么得到的就是一串点了。由于 点 是一个理想状态下的描述在数学上点是没有宽高、没有面积的。但是如果你在草稿纸上绘制一个点不管你用到是铅笔、毛笔、水笔还是画笔一个点总是要占面积的。毛笔画一个点的面积可能需要铅笔画几十个点了。在实际生活中如果要以 0.05 的间距在第一幅坐标系图中画出 x 在 0~1 区间的一串点最终结果就和直接画一条线段没啥差别了。这就是现实和理想的差别了。理想一串点现实一条线。我们把这个逻辑放到手机屏幕上。手机屏幕上的最小显示单位就是像素了一个 1920 * 1080 的屏幕指的就是各方向上像素点的数量。假如绘制一条和屏幕一样宽的线段一个点最小就算一个像素最多也就 1080 个点了。点占的像素越多那么实际绘制时需要的点的数量越少这也算是潜在的优化项了。说完直线再回到贝塞尔曲线上。曲线和直线都有一个共同点它们都有各自特定的方程只不过我们用的直线例子比较简单既 y x 一眼看出计算结果。直线方程 y x在数学上可以这么描述y 是关于 x 的函数既 y F(x) 其中 x 的取值决定了该直线的长度。根据上面的理解这个长度的直线实际又是由在 x 的取值范围内对应的无数个点组成的。反观贝塞尔曲线方程以及对应的图形如下二阶贝塞尔曲线其中P0 和 P2 是起始点P1 是控制点。三阶贝塞尔曲线其中P0 和 P3 是起始点P1 和 P2 是控制点。不难理解假设我们要绘制一条曲线肯定要有起始和结束点来指定曲线的范围曲线。而控制点就是指定该曲线的弧度或者说指定该曲线的弯曲走向不同的控制点得出的曲线绘制结果是不一样的。另外可以观察到无论是几阶贝塞尔曲线都会有参数 t 以及 t 的取值范围限定。t 在 0~1 范围的闭区间内那么 t 的取值个数实际上就有无数个了这时的 t 就可以理解成上面介绍直线中讲到的 x 。这样一来就可以把起始点、控制点当初固定参数那么贝塞尔曲线计算公式就成了 B F(t) B 是关于 t 的函数而 t 的取值范围为 0~1 的闭区间。也就是说贝塞尔曲线选定了起始点和控制点照样可以看成是 t 在 0~1 闭区间内对应的无数个点所组成的。有了上面的阐述在工(ban)程(zhuan)的角度上就不难理解贝塞尔曲线到底怎么使用了。Android 绘制贝塞尔曲线Android 自带贝塞尔曲线绘制 API 通过 Path 类的 quadTo 和 cubicTo 方法就可以完成绘制。 1 // 构建 path 路径也就是选取 2 path.reset(); 3 path.moveTo(p0x, p0y); 4 // 绘制二阶贝塞尔曲线 5 path.quadTo(p1x, p1y, p2x, p2y); 6 path.moveTo(p0x, p0y); 7 path.close(); 8 9 // 最后的绘制操作10 canvas.drawPath(path, paint);这里的绘制实际上就是把贝塞尔曲线计算的方程式交给了 Android 系统内部去完成了参数传递上只传递了起始点和控制点。我们可以通过自己的代码来计算这个方程式从而对逻辑上获得更多控制权也就是把曲线拆分成许多个点组成如果点的尺寸比较大甚至可以减少点的个数实现同样的效果达到绘制优化的目的。OpenGL 绘制通过 OpenGL 可以实现我们上述的方案把曲线拆分成多个点组成。这种方案要求我们在 CPU 上去计算贝塞尔曲线方程根据 t 的每一个取值计算出一个贝塞尔点用 OpenGL 去绘制上这个点。这个点的绘制可以采用 OpenGL 中画三角形 GL_TRIANGLES 的形式去绘制这样就可以给点带上纹理效果不过这里面的坑略多起始点和控制点都是运行时动态可变的实现难度会大于固定不变的。这里先介绍另一种方案这种方案实现比较简单也能达到优化效果我们可以把贝塞尔曲线的计算方程式交给 GPU 在 OpenGL Shader 中去完成。这样一来我们只要给定起始点和控制点中间计算贝塞尔曲线去填补点的过程就交给 Shader 去完成了。另外通过控制 t 的数量我们可以控制贝塞尔点填补的疏密。t 越大填补的点越多超过一定阈值后不会对绘制效果有提升反而影响性能。t 越小那么贝塞尔曲线就退化成一串点组成了。所以说 t 的取值范围也能对绘制起到优化作用。绘制效果如下图所示以下就是实际的代码部分了关于 OpenGL 的基础理论部分可以参考之前写过的文章和公众号就不再阐述了。在 Shader 中定义一个函数实现贝塞尔方程1vec2 fun(in vec2 p0, in vec2 p1, in vec2 p2, in vec2 p3, in float t){2 float tt (1.0 - t) * (1.0 -t);3 return tt * (1.0 -t) *p0 4 3.0 * t * tt * p1 5 3.0 * t *t *(1.0 -t) *p2 6 t *t *t *p3;7}该方程可以利用 Shader 中自带的函数优化一波1vec2 fun2(in vec2 p0, in vec2 p1, in vec2 p2, in vec2 p3, in float t)2{3 vec2 q0 mix(p0, p1, t);4 vec2 q1 mix(p1, p2, t);5 vec2 q2 mix(p2, p3, t);6 vec2 r0 mix(q0, q1, t);7 vec2 r1 mix(q1, q2, t);8 return mix(r0, r1, t);9}接下来就是具体的顶点着色器 shader 1// 对应 t 数据的传递 2attribute float aData; 3// 对应起始点和结束点 4uniform vec4 uStartEndData; 5// 对应控制点 6uniform vec4 uControlData; 7// mvp 矩阵 8uniform mat4 u_MVPMatrix; 910void main() {11 vec4 pos;12 pos.w 1.0;13 // 取出起始点、结束点、控制点14 vec2 p0 uStartEndData.xy;15 vec2 p3 uStartEndData.zw;16 vec2 p1 uControlData.xy;17 vec2 p2 uControlData.zw;18 // 取出 t 的值19 float t aData;20 // 计算贝塞尔点的函数调用21 vec2 point fun2(p0, p1, p2, p3, t);22 // 定义点的 x,y 坐标23 pos.xy point;24 // 要绘制的位置25 gl_Position u_MVPMatrix * pos;26 // 定义点的尺寸大小27 gl_PointSize 20.0;28}代码中的 uStartEndData 对应起始点和结束点uControlData 对应两个控制点。这两个变量的数据传递通过 glUniform4f 方法就好了 1 mStartEndHandle glGetUniformLocation(mProgram, uStartEndData); 2 mControlHandle glGetUniformLocation(mProgram, uControlData); 3 // 传递数据作为固定值 4 glUniform4f(mStartEndHandle, 5 mStartEndPoints[0], 6 mStartEndPoints[1], 7 mStartEndPoints[2], 8 mStartEndPoints[3]); 9 glUniform4f(mControlHandle,10 mControlPoints[0],11 mControlPoints[1],12 mControlPoints[2],13 mControlPoints[3]); 另外重要的变量就是 aData 了它对应的就是 t 在 0~1 闭区间的划分的数量。1 private float[] genTData() {2 float[] tData new float[Const.NUM_POINTS];3 for (int i 0; i tData.length; i ) {4 float t (float) i / (float) tData.length;5 tData[i] t;6 }7 return tData;8 }以上函数就是把 t 在 0~1 闭区间分成 Const.NUM_POINTS 份每一份的值都存在 tData 数组中最后通过 glVertexAttribPointer 函数传递给 Shader 。最后实际绘制时我们采用 GL_POINTS 的形式绘制就好了。1 GLES20.glDrawArrays(GLES20.GL_POINTS, 0, Const.NUM_POINTS );以上就是 OpenGL 绘制贝塞尔曲线的小实践。具体的代码部分可以参考我的项目https://github.com/glumes/AndroidOpenGLTutorial在参考中也有一个 OpenGL 绘制贝塞尔曲线的例子不过他绘制的是贝塞尔曲线面采用的是 GL_TRIANGLES 的形式而且在 tData 数组的构造也有些不同但是都大同小异了看明白了本文的例子也不难理解参考的文章。关于 OpenGL 相关的文章可以参考我之前写过的公众号内容OpenGL 系列---基础绘制流程OpenGL 学习系列---基本形状的绘制OpenGL 学习系列---坐标系统OpenGL 学习系列---投影矩阵OpenGL 学习系列 --- 纹理OpenGL 学习系列---观察矩阵OpenGL ES 学习资源分享用 OpenGL 对视频帧内容进行替换参考https://yalantis.com/blog/how-we-created-visualization-for-horizon-our-open-source-library-for-sound-visualization/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

南山网站公司石家庄p2p网站开发

1.论文介绍 MAS-SAM: Segment Any Marine Animal with Aggregated Features MAS-SAM:利用聚合特征分割任何海洋动物 Paper Code(空的) 2.摘要 最近,分割任何模型(SAM)在生成高质量的对象掩模和实现零拍摄图像分割方面表现出卓越…

平度网站制作广州专业网站制作哪家专业

码元:一个固定时长的信号波形,代表不同离散数值的基本波形 1码元可以携带多个比特的信息量 例如:下图就称为二进制码元,因为只有两种状态,一种代表0状态,一种代表1状态 还有其他进制码元 时长称为码元宽…

2025年华为杯C题|围岩裂隙精准识别与三维模型重构|思路、代码、论文|持续更新中.... - 实践

2025年华为杯C题|围岩裂隙精准识别与三维模型重构|思路、代码、论文|持续更新中.... - 实践2025-09-22 21:55 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !importa…

9.22每日总结

今天急性胃炎发作,请了一天病假,远程完成了一些课程任务、课上练习和作业

算法人生

算法人生 算法与人生,看上去没有什么联系,其实不然。人生是由若干指令(去吃饭、去睡觉、去工作等)组成的有穷序列。 算法有零个或多个由外部提供的量作为算法的输入。人从生下来开始就不断地接收来自于自然界、社会各…

c++ 线程 单例模式

1 #include <iostream>2 #include <cstdio>3 #include <cstdlib>4 #include <cstring>5 #include <mutex>6 #include <thread>7 using namespace std;8 9 #define ll long long 1…

网站开发入无形资产摊销几年个人主页设计图

当下降本增效是各行各业的主题&#xff0c;而 SaaS 应用作为更快触达和服务业务场景的方式则被更多企业熟知和采用。随着国内 SaaS 商业环境的逐渐成熟&#xff0c;传统企业中各个部门的工程师和管理者&#xff0c;能迅速决定采购提升效率的 SaaS 产品&#xff0c;然后快速投入…

南昌的网站设计wordpress婚庆模板

数据类型与作用域练习 1、选择题 1.1、以下选项中,不能作为合法常量的是 ___b_______ A&#xff09;1.234e04 B&#xff09;1.234e0.4 C&#xff09;1.234e4 D&#xff09;1.234e0 1.2、以下定义变量并初始化错误的是______d_______。 A) char c1 ‘H’ &am…

学校网站用途哈尔滨建站哪个好

众所周知&#xff0c;在IOS微信小程序不支持虚拟支付&#xff0c;一直是困扰IOS开发者、运营最头疼的问题&#xff0c;主要原因是苹果不允许IOS微信上架这类产品。导致微信小程序的开发者在IOS上都不能支付虚拟商品&#xff0c;虚拟商品包含了虚拟课程、会员、虚拟书等。 那么…

网站建设运营合同模板招标网查询

文章目录 1、什么是消息队列&#xff1f;2、消息队列有哪些使用场景&#xff1f;&#xff08;为什么使用消息队列&#xff09;2.1 应用解耦2.2 流量削峰2.3 异步处理2.4 消息通讯2.5 远程调用 3、消息队列如何解决消息丢失问题&#xff1f;3.1 生产者保证消息不丢失3.2 存储段不…

海淀网站建设电话合肥建站公司有哪家招聘的

HTML 5已经成为Web开发者当中最流行的语言之一&#xff0c;“健壮的”语言有很大的生产优质万维网内容的能力。HTML 5在近三年的增长迅猛&#xff0c;新引入HTML 5的技术更加的优秀。HTML 5技术被现代浏览器所支持&#xff0c;如Chrome、Firefox、Internet Explorer等等。而今天…

上海聚众网站建设公司joomla网站如何加入会话功能

【-1】写在前面 以下内容文字描述来自于 王爽老师的《汇编语言》教材&#xff0c;建议大家都买一本&#xff0c;哈哈。不是我打广告&#xff0c;确实人家写的好&#xff0c;应该支持。我只是附上了自己的图片和理解而已。 【0】先上干货 只修改ip&#xff0c;称为段内转移&a…

【51单片机】【protues仿真】基于51单片机PM2.5温湿度测量蓝牙架构

【51单片机】【protues仿真】基于51单片机PM2.5温湿度测量蓝牙架构pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

下载网站建设匿名留言墙 wordpress

一般搜索都是调后端的接口&#xff0c;绑searchValue字段&#xff08;也有可能叫其他的字段名&#xff09;&#xff0c;通过后端的接口进行实时搜索 如果由前端自己实现搜索过滤的话也简单 1、input事件 <el-inputv-model"queryParams.searchValue"input"k…

每日反思(2025.9.22)

今天下午跑完步后到自习室跟b站马士兵视频学习,学习了插入,冒泡,选择排序,学习了异或运算的一些小用处,比如不开辟新空间进行两个数的交换,如果一个数组中有一个或者两个数出现奇数次,其他出现偶数次如何找出他…

网站开发与维护工资多少做网站的主流软件

要对接淘宝API接口&#xff0c;可以按照以下步骤进行操作&#xff1a; 注册成为淘宝开放平台开发者&#xff0c;并创建一个应用。在应用创建页面&#xff0c;需要填写应用的名称、描述等信息&#xff0c;并设置应用的API权限等级。获取App Key和App Secret。在应用创建后&…

中国电力建设集团网站网页设计html成品免费

使用conda可以在电脑上创建很多套相互隔离的Python环境&#xff0c;命令如下&#xff1a; 创建环境 创建一个名为deeplearning的环境&#xff0c;python版本为3.7 conda create --name deeplearning python3.7查看版本 conda --version切换环境 切换到deeplearning环境 c…

怎么自己做网站卡扣wordpress 摄影 模板

目录 一、网络相关知识简介 二、网络协议的分层模型 2.1 OSI七层模型 2.2 TCP/IP五层模型 2.3 协议层报文间的封装与拆封 三、IP协议 3.1 MAC地址 3.2 IP地址 3.3 MAC地址与IP地址区别 一、网络相关知识简介 互联网通信的本质是数字通信&#xff0c;任何数字通信都离…

商贸网站企业邮箱与个人邮箱有什么区别

Pytorch上手使用 近期学习了另一个深度学习框架库Pytorch&#xff0c;对学习进行一些总结&#xff0c;方便自己回顾。 Pytorch是torch的python版本&#xff0c;是由Facebook开源的神经网络框架。与Tensorflow的静态计算图不同&#xff0c;pytorch的计算图是动态的&#xff0c;可…

旅游电子商务网站建设调查问卷虚拟体验网站

不久前举办的中心金融工作会议明确要求“推动股票发行注册制走深走实”&#xff0c;无疑为本钱商场活泼进一步夯实制度保证。 上市公司是本钱商场的基石&#xff0c;其质量是决议本钱商场长期健康展开的重要因素之一。作为牵一发而动全身的重要革新&#xff0c;注册制的实施逐…