⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hartleyj.java

📁 用java语言实现了B样条曲线的做法。 可以自由输入控制点
💻 JAVA
字号:
public class	HartleyJ
{
	public static void main(String[] args) 
	{
		double[][] d ={{-24,-12,1,10,12},{0,6,8,2,0}};
		int n=5;
		int k=3;
		double[] u=new double[n+k+1];
		HartleyJ H=new HartleyJ();
		u=H.Hartleyknot(d,n,k);
		
	    double[]  w=H.HartleyT(u,n,k);
		for(int i=0;i<w.length;i++)
			System.out.println(w[i]);
		for(int i=0;i<n+k+1;i++)
		System.out.println("U="+u[i]+"   ");
	}
	public  double sum(double[][] d,int n,int j)
	{
		double L=0;
		double[] l=new double[n];
		for(int i=n-1;i>j;i--)
		{
			l[i]=Math.sqrt((d[0][i]-d[0][i-1])*(d[0][i]-d[0][i-1])+(d[1][i]-d[1][i-1])*(d[1][i]-d[1][i-1]));
			L=L+l[i];
		}	
		return L;
	}
	public  double Sum(double[][] d,int k,int  n)
	{
		double Sum1=0;
		for(int i=k+1;i<=n;i++)
		{
			Sum1=Sum1+sum(d,i,i-k-1);
		}
		return Sum1;

	}
	public  double[] Hartleyknot(double[][] d,int n,int k)
	{ 
		double[] u=new double[n+k+1];
		double U=0;
		for(int j=0;j<=k;j++)
			u[j]=0;
		for(int i=k+1;i<=n-1;i++)
		{
			for(int j=k+1;j<=i;j++)
			{
				U=U+sum(d,j,j-k-1)/Sum(d,k,n);
			}
			u[i]=U;
		}
		for(int j=n;j<n+k+1;j++)
		{
			u[j]=1;
		}
		return u;
	}
	public double[] HartleyT(double[] u,int n,int k)
	{
		double[] w=new double[n-k-1+2];
		for(int i=0;i<w.length;i++)
			w[i]=u[i+k];
		return w;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -