字符串插值-重复
是否有任何方法可以插值变量几次而不重复? 例如: var name = "bla"; Console.WriteLine($"foo {name:repeat:2} bar") 打印 foo blabla bar 我对插值几个 line折断特别感兴趣,而不是在插值蒙版中重复几次{Environment.NewLine}: $"{Environment.NewLine}{Environment.NewLine}" 解决方案 public static string Repeat(this string s, int times, string separator = "") { return string.Join(separator, Enumerable.Repeat(s, times)); } 然后使用: Console.WriteLine($"foo {name.Repeat(2)} bar") 其他解决方案 您可以为字
0 2024-04-15
编程技术问答社区
二维阵列插值
我目前正在C#中的3D游戏.我有一个2维数组,称为data,其中我的x和y值获得了一个z值. 例如: data[x,y] = z; data[1,2] = 4; data[2,4] = 5; 等. 我的问题是这很模糊,我还需要计算的(插值)值,例如x = 1.5和y = 2.5.我该如何达到此值并有任何可用功能? 谢谢 解决方案 也许双线性插值可以在您的方案中使用: float fractionX = ... //the fraction part of the x coordinate float integerX = ... //the integer part of the x coordinate float fractionY, integerY = ... interpolatedValue = (1 - fractionX) * ((1 - fractionY) * data[integerX,
0 2024-04-13
编程技术问答社区
C#线性插值
我在插值数据文件中遇到了问题,我已将其从.csv转换为x数组和y数组,其中x [0]对应于point y [0]. 我需要在值之间插值,以便在末尾给我一个平滑的文件. 我正在使用picoscope来输出该功能,这意味着每行都在及时间隔,因此只使用y值,这就是为什么当您看到我的代码时,我尝试以一种奇怪的方式进行此操作. 它必须处理的价值观是: X Y 0 0 2.5 0 2.5 12000 7.5 12000 7.5 3000 10 3000 10 6000 11 6625.254 12 7095.154 因此,彼此相邻2 y的值是相同的,它之间的直线是直线,但是当它们在病房上从x = 10变化时,它在此示例中变成了正弦波. 我一直在寻找插值等方程和这里的其他帖子,但是多年来我没有做过这种数学,可悲的是我再也无法弄清楚了,因为有2个未知数,我可以' t考虑如何将其编程到c#. 中 我所拥有的: i
2 2024-04-12
编程技术问答社区
如何从Isolines生成一个3-D表面?
我有一组隔离点(或轮廓点): 每个分离线上的每个点都有其各自的x,y和z坐标.由于它们是孤立的,这意味着每个点都具有唯一的X-y对,但是同一行上的点将具有相同的Z坐标. 现在,我可以使用任何算法或任何软件包(在C ++或MATLAB中)将隔离点插入完整的3-D表面? > p/s:我不仅对最终输出感兴趣,而且我有兴趣获取插值的表面数据,以便我自己绘制表面. 编辑:C ++解决方案也受到欢迎. 解决方案 在MATLAB中,您可以使用 scatteredInterpolant 是推荐的替代方案).这两个都使您可以将规则间隔数据的表面贴上一组不均匀的点(尽管在较新的MATLAB版本中不再建议使用griddata).这是您可以使用的方法: griddata: [XI,YI,ZI] = griddata(x,y,z,XI,YI) 其中x,y,z每个代表每个点的笛卡尔坐标的向量(在这种情况下,轮廓线上的点).行矢量XI和列矢量YI是griddata插值拟合
0 2024-04-11
编程技术问答社区
在C#/Unity3D中进行逐片线性整数曲线插值
是否有一种简单,有效的方法来实现c#中的分段线性整数到整数曲线插值(对于Unity3d,如果很重要)? 详细信息如下: 必须随着时间的推移构建分段线性曲线表示.在我们拥有所有数据点之前,第一个插值请求 曲线严格单调 第一点始终是(0,0) 数据点的第一个坐标也严格来说是单调的W.R.T到达时间,即这些点是由其第一个坐标自然排序的. 数据点不在范围内会导致4字节整数引起溢出问题 输出不必100%准确,因此舍入错误不是问题. 在C ++中,我会做这样的事情: #include #include #include using namespace std; typedef pair tDataPoint; typedef vector tPLC; void appendData(tPLC& curve, const tDataPoint& point) {
0 2024-04-10
编程技术问答社区
线性插值:根据二维表计算出修正值
我尝试做一个应该只是二维线性插值的事情,但目前我无法找到正确的方法.为了简化问题:有一个大小为3000x3000像素的绘图区域,我必须绘制例如水平线.为此,我正在绘制从每个像素位置到下一个像素位置的点或短行,然后形成一条线. 现在,必须对整个内容进行校正,在整个过程中,可以在A(简化此示例)中找到校正信息4 x 4数组,其中每个元素都包含一对坐标,描述了校正后的值.因此,中性阵列(无校正)看起来像这样: 0,0 1000,0 2000,0 3000,0 0,1000 1000,1000 2000,1000 3000,1000 0,2000 1000,2000 2000,2000 3000,2000 0,3000 1000,3000 2000,3000 3000,3000 真正的校正表将包含描述要完成的校正的其他坐标: 因此,作为输入数据,我在行上具有点上的点坐标,而无需校正,字段值没有校正和校正数据.
0 2024-04-09
编程技术问答社区
C(或Fortran)中的3D插值方法,并与Shepard的方法进行比较
我想插入3D标量函数f(x, y, z).我已经编码了3D线性插值算法(/a>).这还不错. 但是,我想要一些更复杂的东西,例如3D立方花纹.是否有用于插值3D标量的开源,易于使用的公开代码?我更喜欢使用C,但是Fortran也可以.我想远离Matlab. 我在这里看到了类似的问题: 在3D空间中插值标量 和 3D插值的一些好库是什么? 第二个与Matlab相关,我不是. 至于第一个,主要建议是谢泼德的方法.我很好奇Shepard的方法的准确性.例如,在均匀的网格的情况下,只能将Shepard的方法应用于附近的网格点,在这种情况下,它比线性插值或立方花样更准确吗?我想没有,但不是100%确定的,如果实际上不是更好,那么如果有任何此类代码,我更喜欢使用类似花样的代码找到代码. 解决方案 看看 interpolation interpolation :>: 三具尺寸,均匀B-Splines的模板C ++等等. ( on 邻居数:在3D,2
2 2024-04-09
编程技术问答社区
机器精度
我想知道是否有类似的EP代表C ++中机器精度的值?我可以将其用作双重代表的最小正数吗?是否可以使用1.0/EP作为双重代表的最大正数?我在哪里可以在C ++和C标准库中找到EPS? 谢谢! 更新: 出于我的目的,我想计算一个重量作为距离的相互距离,例如反相反的加权插值( http://en.wikipedia.org/wiki/inverse_distance_weighting ). double wgt = 0, wgt_tmp, result = 0; for (int i = 0; i
0 2024-04-09
编程技术问答社区
浮点线性插值
要在两个变量之间进行线性插值a和b给定分数f,我目前正在使用此代码: float lerp(float a, float b, float f) { return (a * (1.0 - f)) + (b * f); } 我认为可能有一种更有效的方法.我正在使用没有FPU的微控制器,因此在软件中进行了浮点操作.它们很快,但仍然是100个循环要添加或乘. 有什么建议? n.b.为了在上面的代码中的方程式中清楚起见,我们可以省略将1.0指定为明确的浮点字面文字. 解决方案 正如Jason C在评论中指出的那样,您发布的版本很可能是最佳选择,因为它在边缘案例附近的出色精度: float lerp(float a, float b, float f) { return a * (1.0 - f) + (b * f); } 如果我们忽略了一段时间,我们可以简化表达式: : a (1- f )×( b - a ) = a - af
0 2024-04-06
编程技术问答社区
将一个浮动数组转换为一个图像
我的目标是摄入一系列浮子,制作图像,调整图像大小,然后从调整大小的图像中读取一系列浮子. 我要馈送到图像本身的数据与真正的图形不符,但是我试图在调整浮点数组时找到一个用于插值数据的工作. 从我完成的研究中,似乎所涉及的步骤是: 创建一个writableraster对象并将其馈送为float Array 将writableraster对象发送到一个bufferedimage对象 调整BufferedImage对象(使用双线性插值) 以某种方式从BufferedImage获得浮动阵列 帮助,提示和示例代码将不胜感激!!!我的大脑今天油炸. 解决方案 如果将浮子转换为整数,则可以使用 BufferedImage.setRGB(int, int, int, int, int[], int, int) 使用 BufferedImage.getScaledInstance() 将其缩放,然后将相应的getRGB()方法用于上面的setRGB().
0 2024-04-04
编程技术问答社区
在旋转BufferedImage时,如何才能产生鲜明的绘画效果?
一种尝试的方法是使用TexturePaint和g.fillRect()绘制图像.但是,这需要您每次绘制图像时都会创建一个新的texturePaint和Rectangle2D对象,这并不理想 - 无论如何都无济于事. 当我使用g.drawImage(BufferedImage,...)时,旋转的图像似乎是模糊的/柔软的. 我熟悉 renderinghints 和双重颠覆(这是我在做的事情),我发现很难相信您不能轻易有效地旋转一个在Java中产生尖锐结果的图像. 使用TexturePaint的代码看起来像这样. Grahics2D g2d = (Graphics2D)g; g2d.setPaint(new TexturePaint(bufferedImage, new Rectangle2D.Float(0,0,50,50))); g2d.fillRect(0,0,50,50); 我正在使用AffineTransform将一只卡片旋转到风扇中. 快速绘制好看图像
0 2024-04-04
编程技术问答社区
c++ Boost中的Hermite插值算法
我正在尝试使用Boost C ++库进行Hermite插值,但记录并不理解. 我的案例是从数据点(例如: )从某个x位置计算y值. X: 0.9, 1.7, 2.55, 3.39... Y: 0.9, 0.8, 0.85, 0.84... 并获得相等x空间(x空间0.5)的结果: X: 0.5, 1.00, 1.5, 2.00, 2.5, 3.0,... Y: 0.8, 0.95, 0.8, 0.85, 0.9, 0.9,... Boost对我有帮助吗?我在网络中发现了更多的HERMITE实现,但是示例,结果输出并不是我想要的.我认为那是因为我不明白它是如何工作的.当我读到有关Hermite的信息时,我想到算法应该要求一些要点,间距值,并且可能很少其他输入值,然后计算和返回新的点,但是我错了,现在丢失了. 也许有人有使用Hermite的经验,并且有类似的情况? 解决方案 好吧,首先,Hermite是一位多产的数学家,所以 Interpolation
2 2024-04-02
编程技术问答社区
在Python Bokeh中像matplotlib一样用插值法绘制图像?
有什么方法可以将2D阵列绘制为图像,例如在matplotlib中进行插值?我能够使用一个示例来绘制: .org/en/最新/docs/gallery/image.html 但是,图像是粗糙的.我喜欢matplotlib中的插值工作:我试图事先执行插值,但现在的矩阵大小很大. 解决方案 我遇到了同样的问题,我在Pyviz的吉特(Pyviz)的吉特(Gitter)中找到了答案. 解决方案结合了Holoviews和Datashader: import holoviews as hv from holoviews import opts from holoviews.operation.datashader import regrid img = hv.Image(data) regrid(img, upsample=True, interpolation='bilinear') 其他解决方案 如果您是 in 其他解决方案 不是答案,而是一个观察 - 我注意到,当您在
0 2024-04-01
编程技术问答社区
如何在C#中调整位图图像的大小而不进行混合或过滤?
我有一个我想放大的灰度图像,以便我可以更好地看到单个像素.我尝试将平滑模式设置为"无",并尝试将一些不同的插值模式设置(如此处的其他问题所建议),但是在我看来,这些图像仍然在我在屏幕上显示某种混合. 基本上,如果我有一个图像 (White, White, White, Black) 我要放大到6x6时,它看起来像 (White, White, White, White, White, White White, White, White, White, White, White White, White, White, White, White, White White, White, White, Black, Black, Black White, White, White, Black, Black, Black White, White, White, Black, Black, Black) 在黑色和白色区域之间没有褪色,应该看起
0 2024-03-31
编程技术问答社区
位操作-如何改变现有的颜色?
我已经阅读了位于位运算符(&| ^),我知道如果我要这样做: alpha = 0xFF000000 >> 24 ; blue = 0xFF0000FF & 0x000000FF; red = 0xFFFF0000>>16 & 0x000000FF; green = 0xFF00FF00>>8 & 0x000000FF; 然后我可以掩盖其他颜色,只有红色或蓝色(等)组件 如果我要做 int color = alpha | blue | red | green; 然后,我可以再次重新构造颜色.我很好奇的是,如果我想在Java中的两种颜色之间创建双线性插值.我将如何构建它? 我想从标准的绿色(0xff00ff00)开始,并以黑色(0xff000000)结尾,中间的颜色将从绿色变为深绿色,直到最终变成黑色.我认为我必须做一些我创建一个缓冲图的地方,该模仿从顶部开始为绿色,然后创建一个for循环,该循环会读取上一个像素的颜色,然后移动一些东西,直到上一个颜色的新版本是创建等等.
0 2024-03-31
编程技术问答社区
绑定中的Angular 2绑定。事件中的插值
尝试执行以下操作并获得"获得了预期表达式的插值({{}})" 错误. {{item.name}} 谢谢! 解决方案 不要在任何事件处理程序代码(在视图上)内部使用{{}}(插值),直接通过表达式,该表达式将对Component上下文(this)进行评估,就像在这里一样'试图将item.name传递到foo函数.因此,删除{{}}括号将有能力. {{item.name}}
0 2024-03-31
编程技术问答社区
属性绑定与属性插值
我已经阅读了一篇有关属性和属性绑定之间差异的文章.据我了解,大多数时候,Angular2更喜欢财产绑定, 因为在每次更改数据之后,将更新DOM. (如果我错了,请纠正我). 我有一个自定义组件,并从父组件中使用它.在其中,我有一个名为truevalue的@Input.当我通过属性绑定从父母启动truevalue时,有时不会改变.我使用以下代码: 如果我将true或"1"发送到trueValue中,但是如果我发送"Y"或"YES",则它不起作用.因此,我被迫使用属性绑定.我不知道有什么问题. 我已将其更改为以下:
0 2024-03-30
编程技术问答社区
如何对不描述函数的N个点进行插值
假设我有n点,也假设该点有一个顺序,没有必要的要点可以函数.我想知道如果要点没有描述功能,该如何插入它们?例如,这将是原始点: 我希望这个结果: 请注意,只有使用样条不起作用,因为这些点不能产生函数,并且使用bezier曲线行不通,因为它们不会插入点(仅通过它们附近).我该怎么做?有算法吗? 只是一个更新.由于我作为参考的接受答案的链接已降低,因此我将分享我写的一篇文章,以帮助他人解决这个问题. wpf中的曲线 最终算法的实时实现. JavaScript 解决方案 有很多花键,例如 曲线由Maxim Shemanarev 提出 其他解决方案 此答案解决了问题本身的一些概念问题.我不打算作为一个完整的答案. 首先是在给定情况下总是有一个函数.从数学上讲,您将曲线描述为来自实际数字的函数,大致表示"时间"到您的空间.这通常称为曲线的参数表示.我们将函数写为f(t) =( x(t), y(t) ),其中x(t)和y(t)是单个参数函数.
0 2024-03-30
编程技术问答社区
在OpenGL中绘制Hermite曲线
如何使用OpenGL绘制Hermite曲线,是否有内置功能?我看到了一些在线示例,这些示例显示了如何使用评估者绘制曲线的曲线,但找不到任何有关Hermite曲线的信息. 解决方案 让您的bezier控制点的向量为[B0 B1 B2 B3],而您的Hermite的控制点为[H0 H1 V0 V1](V0和V1是点H0和H1的派生/切线).然后,我们可以使用矩阵表单显示转换: hermite to bezier [b0] = 1 [ 3 0 0 0] [h0] [b1] - [ 3 0 1 0] [h1] [b2] 3 [ 0 3 0 -1] [v0] [b3] [ 0 3 0 0] [v1] (这完全像Naaff的响应中,上面). hermite [h0] = [ 1 0 0 0] [b0] [h1] [ 0 0 0 1] [b1] [v0] [-3 3 0 0] [b2] [v1] [
0 2024-03-30
编程技术问答社区
跨越贝塞尔曲线的等距点
目前,我正在尝试使多个贝齐斯有等距的观点.我目前正在使用立方插值来查找这些要点,但是由于beziers的工作方式某些区域比其他区域更密集,并且由于距离的距离而证明了纹理映射的粗略. 是否有一种方法可以通过距离而不是按百分比找到更偏见的点?此外,是否可以将其扩展到多个连接的曲线? 是的 曲线上的距离只是弧长: 其中: 图2 http://www.codecogs.com/eq.latex?p%27(T)%20=%20 [%7bx%27,y%27,27,z%27%20=%20=% 7d]%20 =%20 [%7b%5CFRAC%7BDX(T)%7D%7D%7D%7D,%5CFRAC%7BDY(T)%7D%7D%7BDT%7D,%5CFRAC%7BDZ(T) 7d%7d] 可能,您将有T_0 = 0,T_1 = 1.0,DZ(T)= 0(2D平面). 其他解决方案 这称为"弧长"参数化.几年前,我写了一篇论文: param.pdf 这个想法是预先计算"
2 2024-03-30
编程技术问答社区