标签: curve

通过字符串定义曲线()

早上好,

我被困在 R 中字符串和表达式之间的类型转换。我想绘制一条曲线(使用 curve() 函数),其中一个由字符串定义的方程如下:

curve(x^3)
## Ok, generates a curve as expected

qq<-"x^3"
curve(qq)
Error in UseMethod("qq") : 
no applicable method for 'qq' applied to an object of class "c('double', 'numeric')"
Run Code Online (Sandbox Code Playgroud)

我可以理解,第一个 arg 应该是一个表达式。

curve(expr=expression(qq))
Error in curve(expr = expression(qq)) : 
  'expr' must be a function, or a call or an expression containing 'x'
Run Code Online (Sandbox Code Playgroud)

我无法理解:我对这个人的 expression() 的理解是“... expression 返回一个包含其参数(未计算)的“表达式”类型的向量。”

那么,我必须怎么做才能用由字符串 qq 的内容定义的方程来绘制曲线?

谢谢

杰夫

curve expression r

4
推荐指数
1
解决办法
466
查看次数

沿着 3d 曲线渲染圆

我正在尝试围绕 3d 曲线的每个点渲染圆圈。基本上试图为曲线创建一个管状结构。但如图所示,圆圈的方向是错误的。下面是我在计算 frenet 框架后对圆形对象的模型矩阵的计算。我哪里错了?作为参考,绿线是切线,蓝色是法线,红色是副法线。

视图1 视图2

Frenet Frame Calculations

glm::vec3 pointback = curve_points[i-1];
glm::vec3 pointmid = curve_points[i];
glm::vec3 pointforward = curve_points[i+1];

glm::vec3 forward_tangent_vector =  glm::vec3(glm::normalize(pointforward - pointmid)) ;
glm::vec3 backward_tangent_vector = glm::vec3(glm::normalize(pointmid - pointback)) ;

glm::vec3 second_order_tangent = glm::normalize(forward_tangent_vector - backward_tangent_vector);

glm::vec3 binormal = glm::normalize(glm::cross(forward_tangent_vector, second_order_tangent));

glm::vec3 normal = glm::normalize(glm::cross(binormal, forward_tangent_vector));
Run Code Online (Sandbox Code Playgroud)

Model Matrix for Circle calculations

glm::mat3 tbn = glm::mat3(forward_tangent_vector,binormal,normal);

glm::vec3 normal_axis = glm::vec3(0, 1, 0);
//normal_axis = forward_tangent_vector;

glm::vec3 circleNormal = glm::normalize(tbn * normal_axis);
glm::vec3 rotationAxis = glm::cross(normal_axis, circleNormal); …
Run Code Online (Sandbox Code Playgroud)

c++ opengl curve computational-geometry glm-math

4
推荐指数
1
解决办法
1090
查看次数

获取二维贝塞尔曲线的法线

我正在尝试在贝塞尔曲线中包装文本并遵循此链接中的教程,http://www.planetclegg.com/projects/WarpingTextToSplines.html

我通过此代码获得衍生:

function Derivative(x0,x1,x2,t)
{
   var mt = 1-t;
   var a = mt * mt; 
   var b = mt * t * 2; 
   var c = t * t; 
   var result=a * x0 + b * x1 + c * x2;
   return result;
}
Run Code Online (Sandbox Code Playgroud)

所以我用这个代码计算正常:

function Normal(x0,x1,x2,y0,y1,y2,t) 
{      
  var dx = Derivative(x0,x1,x2,t);     
  var dy = Derivative(y0,y1,y2,t);  

  var q = Math.sqrt(dx*dx + dy*dy)
  return { x: -dy/q, y: dx/q };
};
Run Code Online (Sandbox Code Playgroud)

所以这是结果:有些不对劲,但我不知道在哪里。

看图

谢谢大家!

bezier curve

4
推荐指数
1
解决办法
2838
查看次数

android一次两个动画

我使用 ValueAnimator 通过抛物线方式移动 ImageView,它的作用就像一个魅力。现在我正在尝试将另一个动画添加到同一个 ImageView,使用 XML 代码围绕自身旋转。当我单独使用旋转动画(没有 ValueAnimator)时,它工作正常,但是当我同时启动两个动画时,结果完全错误,图像通过错误的方式,有时会阻塞。这是代码:

this.ValueAnimator1 = ValueAnimator.ofFloat(0.0f,1.0f);
this.ValueAnimator1.setDuration(4000);
this.ValueAnimator1.addUpdateListener(new AnimatorUpdateListener(){
    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        float t = ((Float)ValueAnimator1.getAnimatedValue()).floatValue();
        float xPos = p0.x*(1-t)*(1-t) + 
            p1.x*2*t*(1-t) + p2.x*t*t;
        float yPos = p0.y*(1-t)*(1-t) + 
            p1.y*2*t*(1-t) + p2.y*t*t;
        ImageView1.setTranslationX(xPos); 
        ImageView1.setTranslationY(yPos);
    }
});
this.Animation1 = AnimationUtils.loadAnimation(this,R.anim.rotation_projectile);
ImageView1.startAnimation(rotationProjectile);
ValueAnimator1.start();

<?xml version="1.0" encoding="utf-8"?>
<rotate 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0" 
    android:toDegrees="90"
    android:pivotX="50%"
    android:pivotY="50%"
    android:fillEnabled="true"
    android:fillAfter="true"
    android:duration="4000"
/>
Run Code Online (Sandbox Code Playgroud)

animation android curve rotation

4
推荐指数
1
解决办法
6378
查看次数

如何在opengl中绘制二维平滑曲线

我在 opengl 中搜索了绘制样条曲线,我发现的解决方案使用许多顶点来绘制它。显然,它们在缩放时会损坏。

如何绘制与缩放无关的平滑曲线,例如矢量图形?在opengl中是否有任何正确的方法可以做到这一点,还是应该是软件渲染方式?

opengl curve

4
推荐指数
1
解决办法
4931
查看次数

基于点的曲线变换。Android中的贝塞尔曲线变换

我有一个点列表,这些点表示使用Path对象在画布上绘制的曲线。

path.moveTo(x, y);
for (int i = 0; i < points.size(); i++) {
    path.lineTo(points.get(i).x, points.get(i).y);
}
canvas.drawPath(path, paint);
Run Code Online (Sandbox Code Playgroud)

我要实现的功能是设置用户可以触摸和移动的控制点,并根据该移动来改变我的点。Photoshop所做的相同操作会Pen Tool看到图像: 在此处输入图片说明

注意:android Path仅用于绘图,我不需要修改Path我需要修改坐标。所以上面的代码可以替换为

canvas.drawLine();
Run Code Online (Sandbox Code Playgroud)

它与Path对象无关。

java android bezier curve smoothing

4
推荐指数
1
解决办法
1019
查看次数

WebGL如何绘制曲线

我想画曲线,但我不知道如何用 WebGL 来做。我有很多想法用 gl.LINE_STRIP 做一些事情,也许画圆(以去掉角)并以某种方式绘制弧形角,或者可能画圆(如直线或其他东西),该怎么办?

curve draw webgl

4
推荐指数
1
解决办法
6841
查看次数

用geom_密度制作的密度曲线缩放到与geom_histogram相似的高度?

我需要将密度线与 geom_histogram 的高度对齐,并在 y 轴而不是密度上保留计数值。

我有这两个版本:

#  Creating dataframe
library(ggplot2)

values <- c(rep(0,2), rep(2,3), rep(3,3), rep(4,3), 5, rep(6,2), 8, 9, rep(11,2))
data_to_plot <- as.data.frame(values)

Run Code Online (Sandbox Code Playgroud)
# Option 1 ( y scale shows frequency, but geom_density line and geom_histogram are not matching )
ggplot(data_to_plot, aes(x = values)) +
  geom_histogram(aes(y = ..count..), binwidth = 1, colour= "black", fill = "white") +
  geom_density(aes(y=..count..), fill="blue", alpha = .2)+
  scale_x_continuous(breaks = seq(0, max(data_to_plot$values), 1))

Run Code Online (Sandbox Code Playgroud)

y 刻度显示频率,但 geom_密度线和 geom_histogram 不匹配 y 刻度显示频率,但 geom_密度线和 geom_histogram 不匹配

# Option 2 (geom_density line and geom_histogram …
Run Code Online (Sandbox Code Playgroud)

curve r histogram ggplot2 density-plot

4
推荐指数
1
解决办法
3744
查看次数

在 JavaScript 中创建随机 SVG 曲线,同时避免急转弯

下面的代码片段在文档上绘制一定次数的随机连接曲线:

function createPath() {
  const 
    dimensions = getWindowDimensions(), svg = document.querySelector( `svg` ),
    path = document.createElementNS( `http://www.w3.org/2000/svg`, `path` );
  
  dimensions[0] = dimensions[0]; dimensions[1] = dimensions[1];
  svg.appendChild( path );
  
  path.setAttribute(
    `d`,
    `M ` +
    `${getRandomNumber(dimensions[0])} `+`${getRandomNumber(dimensions[1])} `+
    `C `+ 
    `${getRandomNumber(dimensions[0])} `+`${getRandomNumber( dimensions[1])}, `+  
    
    `${getRandomNumber(dimensions[0])} `+`${getRandomNumber( dimensions[1])}, `+
    
    `${getRandomNumber(dimensions[0])} `+`${getRandomNumber( dimensions[1])} `
  )
  
  for( let i = 0; i < 100; i++  ) {
    path.setAttribute(
      `d`,
      path.getAttribute( `d` ) + 
      `S `+`${getRandomNumber(dimensions[0])} `+`${getRandomNumber(dimensions[1])},`+
      
      `${getRandomNumber(dimensions[0])} `+`${getRandomNumber(dimensions[1])} `
    )
  }
}

setInterval( setSVGDimensions, 10 …
Run Code Online (Sandbox Code Playgroud)

javascript random algorithm svg curve

4
推荐指数
1
解决办法
1013
查看次数

带圆角的SVG路径为圆弧

我需要创建带圆角的SVG路径,将它们导出到DXF进行切割.我的问题是角落应该是圆弧,而不是一些贝塞尔曲线.

使用arc命令使用直角相对容易,因为半径也是从角落到弧开始处的距离.从其他角度来看,它更复杂.

给定一个角和一个半径,是否有计算弧的起点和终点的公式?

在此输入图像描述

右上角很容易,但左下角非常棘手,因为我必须找出线必须结束的地方并开始弧线.

我发现了一个带有svg椭圆弧的计算,它将一个公式链接起来,将终点转换为中心参数化.这没有用,因为我也不知道圆圈的中心在哪里.

如何计算弧(圆)的SVG路径只计算弧,而不是两条线之间的弧代替锐角.

SVG中三角形圆角的解决方案仅在某些边与坐标系平行或改变半径时才起作用.

将圆角应用于路径/多边形尝试使用一些带有linejoin或几条立方曲线的技巧,我想要什么.

即使我使用圆形来创建这个形状,即使是Inkscape(我以前用于绘制上面的图像)也使用5个立方曲线而不是弧形.

如果您有一些提示我可以如何管理这一点,我将非常感激.

svg curve vector-graphics elliptic-curve geometric-arc

3
推荐指数
1
解决办法
2497
查看次数