Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Time 加工线逐渐变大_Time_Processing_Lines - Fatal编程技术网

Time 加工线逐渐变大

Time 加工线逐渐变大,time,processing,lines,Time,Processing,Lines,所以我在一个文件中有坐标和秒数,我想让一条线逐渐变大。在文件中,我有x1,x2(关于第一个点坐标),x2,y2(第二个点坐标),以及我想要开始在第二个点方向上增加线的时间(以秒为单位) 这是我的代码: //读台词 导入处理。视频。*; 电影我的电影; 表格; 浮动持续时间、时间; int row_no=1; int clickcount=0; 无效设置(){ 规模(640480); myMovie=新电影(这个“draft.mov”); myMovie.loop(); table=loadTab

所以我在一个文件中有坐标和秒数,我想让一条线逐渐变大。在文件中,我有x1,x2(关于第一个点坐标),x2,y2(第二个点坐标),以及我想要开始在第二个点方向上增加线的时间(以秒为单位)

这是我的代码:

//读台词

导入处理。视频。*;
电影我的电影;
表格;
浮动持续时间、时间;
int row_no=1;
int clickcount=0;
无效设置(){
规模(640480);
myMovie=新电影(这个“draft.mov”);
myMovie.loop();
table=loadTable(“data/new.csv”);
}
作废提款(){
duration=myMovie.duration();
time=myMovie.time();
图像(myMovie,0,0);
if(time>=table.getFloat(第4行)){
冲程重量(15);
中风(255,14255);
float a=table.getFloat(第0行);
float b=table.getFloat(第1行);
行(table.getFloat(第0行),table.getFloat(第1行),a,b);
a=a+2;
b=b+2;
}
}
//每次有新帧可读取时调用
无效电影事件(电影m){
m、 read();
} `

正如尼科洛建议的那样,先把你的问题分解,拿出你不需要的任何东西,然后一步一步走

根据你对目标的描述,在术语或删除内容方面,听起来代码与播放电影没有任何关系,所以将代码删除以简化。(我能想到的使用电影的唯一原因是使用它的当前时间来控制线条,但是除非你想要电影背景,否则你不应该需要它)

在draw()循环中,有一些事情看起来很奇怪:

  • 如果(time>=table.getFloat(row_no,4)){
    假设.csv文件中的第5列以秒为单位保存当前行的提示时间,则此条件可能只触发一次,因为没有任何增量
    row_no
  • line(table.getFloat(row_no,0),table.getFloat(row_no,1),a,b);
    可能不是您想要的,并且可能是一个打字错误,因为
    a
    b
    是从相同的.csv列(0和1)检索的,这意味着您的行的开始和结束位置都在正确的位置(因此不渲染行)。也许您的意思是
    行(table.getFloat(第2行),table.getFloat(第3行),a,b);
  • a=a+2;
    b=b+2;
    :其中一个点的x、y位置可能会偏移2,但新位置永远不会超过该点。在下一次
    draw()
    迭代中,会重新定义
    a
    b
    ,因此偏移会丢失
  • 让我们仔细分析一下问题:

    我在一个文件中有坐标和秒数,我想让一条线逐渐变大。在这个文件中,我有x1,x2(关于第一点坐标),x2,y2(第二点坐标),以及我想开始在第二点方向上增加线的时间(以秒为单位)

  • 加载并分析数据(包含线坐标(x1、y1、x2、y2)和时间(以秒为单位)的行)
  • “使一行逐渐变大”-根据指定的时间(以秒为单位)在当前行(.csv行坐标)和下一行之间设置动画(插值)
  • 更进一步地说,如果从零开始,更多的是“如何做”:

  • 在一个值和另一个值之间插值(暂时忽略时间,保持任务独立且尽可能简单)
  • 跟踪时间作为值之间插值的参数
  • 解析.csv行
  • 在4个值之间插值
  • 基于动画时间递增.csv行
  • 幸运的是,Processing提供了一个内置函数,用于在值之间进行线性插值(简称lerp=线性插值)。 它需要三个参数:

  • 要从中设置动画的值(开始)
  • 要设置动画的值(停止)
  • 插值量(介于0.0和1.0之间)
  • 它返回一个值:介于开始值和停止值之间的值。 将插值量视为一个百分比(0=0%,0.5=50%,1.0=100%)

    下面是一个基本的草图来说明这个概念:

    void draw(){
      background(255);
      //map time to an interpolation normalized value 
      float t = map(mouseX,0,width,0.0,1.0);
      //interpolate the values
      float size = lerp(10,90,constrain(t,0.0,1.0));
      ellipse(50,50,size,size);
    }
    
    下面是您可以运行的p5.js演示片段:

    函数设置(){
    createCanvas(100100);
    }
    函数绘图(){
    背景(255);
    //将时间映射到插值标准化值
    var t=映射(mouseX,0,宽度,0.0,1.0);
    //插值
    变量大小=lerp(10,90,约束(t,0.0,1.0));
    椭圆(50,50,大小,大小);
    }

    堆栈溢出实际上不是为一般的“我该怎么做”类型的问题而设计的。它是为了更具体的“我尝试了X,预期是Y,但得到了Z”键入问题。您需要。您要问的问题不清楚,因此请尝试编辑该问题,以便:询问您想做什么,显示您以前如何尝试做但未成功,并显示失败尝试的结果。您能否将问题缩小到一个范围,而不是整个项目?您的问题没有任何限制与电影有关的事情,是吗?因此,只需从一个更基本的草图开始,该草图只显示线条的增长。我们也无法访问该文件,因此请使用硬编码的数字。