Ⅰ java怎麼轉換c語言
Java直接轉C的沒有。
Java轉C#和C++的倒是有軟體。(具體用法還要你自己研究)
比如:
1、Java語言轉換器助手銜接,這個可以轉C#。
2、Octopus的.NET轉換器銜接,這個可以轉C++或C#。
3、Tangible的Java轉C#轉換器銜接,有注釋,方便學習,需要購買商業版才行。
4、XES的Java轉C#轉換器銜接,界面簡單,容易上手。
5、Varycode工具銜接,在線工具,支持多語言轉換(包括VB、Ruby、Python等)。
Ⅱ android中Path類的lineTo方法和quadTo方法畫線的區別
android 中path類lineto方法和quadto方法的區別如下:
1. Path--->quadTo(float x1, float y1, float x2, float y2):
該方法的實現是當畫弧線時會形成平滑的曲線,該曲線又稱為"貝塞爾曲線"(Bezier curve),其中,x1,y1為控制點的坐標值,x2,y2為終點的坐標值;
貝塞爾曲線的形成,就比如我們把一條橡皮筋拉直,橡皮筋的頭尾部對應起點和終點,然後從拉直的橡皮筋中選擇任意一點(除頭尾對應的點外)扯動橡皮筋形成的彎曲形狀,而那個扯動橡皮筋的點就是控制點。
2. Path--->lineTo(float x, float y) :
該方法實現的僅僅是兩點連成一線的繪制線路,這樣,當我們用這個方法繪制曲線時,缺陷就出來了。對比前面quadTo方法lineTo方法繪制的曲線不能形成平滑的彎曲,會出現明顯的兩點形成一線的突痕。
Ⅲ java如何用描點法繪制雙曲線
一個點一個點的畫是最簡單的。然後用Path2D來畫直線。
Path2D.Double path = new Path2D.Double () ;
for (int i = 0 ; i < 100; i ++)
{
double y = f (x) ;
path.lineTo(x, y) ;
// 這里可以用quadTo () ;但要提供差值點。
}
Graphics2D g2 = (Graphics2D) g ;
g.draw (path) ;
補充:quadTo可能就是差值演算法,這樣你可以減少採樣點來達到平滑曲線的效果。另外就是用RanderHint來進行抗鋸齒等平滑處理。
Ⅳ java中用畫筆畫出來的畫如何隨機生成
g.drawLine(x1,y1,x2,y2); 這是用來畫線的,那麼那兩個點用Math.random()隨機生成就行了,其它也是一樣的,什麼圓啊貝塞爾曲線啊矩形啊之類的都是用點來控制畫出來的,那麼隨機生成那些點就行了。另外還可以隨機生成一個0至10的數,0的話畫圓,1的話畫矩形之類
Ⅳ 怎麼求 Java 貝塞爾曲線兩點之間的角度
public void test() {
CvPoint controlPoint[] = new CvPoint[4];
controlPoint[0] = new CvPoint(50, 60); //起點
controlPoint[1] = new CvPoint(130, 200); //控制點
controlPoint[2] = new CvPoint(300, 360); //控制點
controlPoint[3] = new CvPoint(400, 600); //終點
int n = controlPoint.length - 1; //
int i, r;
float u;
bezierPoint.clear();
// u的步長決定了曲線點的精度
for (u = 0; u <= 1; u += 0.01) {
CvPoint p[] = new CvPoint[n + 1];
for (i = 0; i <= n; i++) {
p[i] = new CvPoint(controlPoint[i].x, controlPoint[i].y);
}
for (r = 1; r <= n; r++) {
for (i = 0; i <= n - r; i++) {
p[i].x = (1 - u) * p[i].x + u * p[i + 1].x;
p[i].y = (1 - u) * p[i].y + u * p[i + 1].y;
}
}
bezierPoint.add(p[0]);
}
for (CvPoint point : bezierPoint) {
System.out.println(point.x + "," + point.y);
}
}
Ⅵ 求: Java畫出---CubicCurve2D.Double cubicCurve2D 三次貝塞爾曲線 的例子。
可選中1個或多個下面的關鍵詞,搜索相關資料。也可直接點「搜索資料」搜索整個問題。
Ⅶ java 三次貝塞爾曲線 怎麼確定控制點
只是第二點和第三點的坐標而已,肯定有演算法。具體看你要實現什麼業務。
Ⅷ 求java高手編寫下面的程序, 英文的。。。
public static void main(String[] args) {
System.out.println(f(0.0));
System.out.println(f(0.2));
System.out.println(f(0.4));
System.out.println(f(0.8));
System.out.println(f(0.9));
System.out.println(f(1.0));
}
public static double f(double x){
double result = 1 - 2.2499997 * Math.pow(x, 2)
+ 1.2656208 * Math.pow(x, 4)
- 0.3163866 * Math.pow(x, 6)
+ 0.0444479 * Math.pow(x, 8)
- 0.0039444 * Math.pow(x, 10)
+ 0.0002100 * Math.pow(x, 12);
return Math.round(result/0.000001)*0.000001; // 保留六位小數,四捨五入
}
Ⅸ 三次Bezier曲線繪制編程
順便練一下貝塞爾函數,寫了一個applet,每秒鍾隨機生成4個點展示效果。
滿足題目要求的介面。
importjava.applet.Applet;
importjava.awt.Color;
importjava.awt.Graphics;
importjava.util.Random;
importjava.util.Timer;
importjava.util.TimerTask;
publicclassTestextendsApplet{
=-1570645570118871214L;
privateintpx[],py[];
privateRandomrnd;
@Override
publicvoidinit(){
rnd=newRandom(System.currentTimeMillis());
px=newint[4];
py=newint[4];
Timert=newTimer();
t.scheleAtFixedRate(newTimerTask(){
@Override
publicvoidrun(){
repaint();
}
},0,1000);
}
privatevoidgenerate(){
for(inti=0;i<4;i++){
px[i]=rnd.nextInt(150);
py[i]=rnd.nextInt(150);
}
}
staticpublicvoiddrawBezier(
Graphicsg,
intx0,inty0,
intx1,inty1,
intx2,inty2,
intx3,inty3){
int
px[]={x0,x1,x2,x3},
py[]={y0,y1,y2,y3};
g.setColor(Color.RED);
for(inti=0;i<px.length;i++){
g.fillOval(px[i],py[i],5,5);
}
g.setColor(Color.GREEN);
doublex=0,y=0;
intc=0;
for(doublet=0;t<=1;t+=0.01){
doubledx=cubicBezier(t,px),
dy=cubicBezier(t,py);
System.out.println("dx:"+dx+",dy:"+dy);
if(c++>0)g.drawLine((int)x,(int)y,(int)dx,(int)dy);
x=dx;y=dy;
}
}
(doublet,intp[]){
returnMath.pow(1-t,3)*p[0]+
3*t*Math.pow(1-t,2)*p[1]+
3*Math.pow(t,2)*(1-t)*p[2]+
Math.pow(t,3)*p[3];
}
@Override
publicvoidpaint(Graphicsg){
generate();
drawBezier(g,
px[0],py[0],
px[1],py[1],
px[2],py[2],
px[3],py[3]
);
}
}