python正弦波变方波_Python之OpenGL笔记(19):正弦波叠加为方波的GLSL实现

一、目的

1、正弦波叠加为方波的GLSL实现;

二、程序运行结果

522cf9375dd3f1f4bfb92f442f787596.png

三、正弦波合成方波的处理

1、傅里叶函数分解方波公式:

f(y) = 4/PI * (sinx+ sin3x/3 + sin5x/5 + …);

2、实际程序里面公式为:

f(y) = sinx+ sin3x/3 + sin5x/5 + …

3、键盘控制

加入了正弦波合成方波的处理,使用箭头键移动正弦波,使用上下箭头进行振幅调整,使用+,-号来调整正弦波叠加的次数。

四、源代码

"""

glfw_sin02.py

Author: dalong10

Description: Draw a SquareWave, learning OPENGL

"""

import glutils #Common OpenGL utilities,see glutils.py

import sys, random, math

import OpenGL

from OpenGL.GL import *

from OpenGL.GL.shaders import *

import numpy

import numpy as np

import glfw

strVS = """

#version 330 core

layout (location = 0) in float vertexSerial;

uniform int g_sinCnt;

uniform float g_rangeL;

uniform float g_rangeR;

uniform float g_amplitud;

const int sampleCnt=200;

vec2 createSinPostion(float posIdex,float factor,float amplitude, float rangeL, float rangeR)

{vec2 sinPos;

float range = rangeR - rangeL;

sinPos.x = (2.0 * posIdex - s

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值