Results 21 to 40 of 48
Thread: sine wave in java2D graphics.
-
Re: sine wave in java2D graphics.
Look at these two graphs
y=x2 (quadratic)
http://www.bbc.co.uk/schools/gcsebit...s/graph_24.gif
y=-x3 (cubic)
http://www.bbc.co.uk/schools/gcsebit...s/graph_17.gif
which one looks more like a sine wave?
- 03-04-2012, 05:00 PM #22
- Join Date
- Sep 2008
- Location
- Voorschoten, the Netherlands
- Posts
- 11,589
- Blog Entries
- 7
- Rep Power
- 17
Re: sine wave in java2D graphics.
When people rob a bank they get a penalty; when banks rob people they get a bonus.
- 03-04-2012, 05:28 PM #23
- 03-04-2012, 05:40 PM #24
- 03-04-2012, 05:48 PM #25
-
Re: sine wave in java2D graphics.
Yes there are FFT libraries out there that are best found via Google.
- 03-04-2012, 06:33 PM #27
-
Re: sine wave in java2D graphics.
- 03-04-2012, 07:02 PM #29
- 03-04-2012, 07:07 PM #30
- Join Date
- Sep 2008
- Location
- Voorschoten, the Netherlands
- Posts
- 11,589
- Blog Entries
- 7
- Rep Power
- 17
Re: sine wave in java2D graphics.
When people rob a bank they get a penalty; when banks rob people they get a bonus.
-
-
- 03-04-2012, 07:19 PM #33
- Join Date
- Sep 2008
- Location
- Voorschoten, the Netherlands
- Posts
- 11,589
- Blog Entries
- 7
- Rep Power
- 17
Re: sine wave in java2D graphics.
As in "bŭßƨƮǒƤ" 'squire? But then it doesn't even look like "muffin" ...
kindest regards,
JosWhen people rob a bank they get a penalty; when banks rob people they get a bonus.
- 03-04-2012, 07:19 PM #34
Re: sine wave in java2D graphics.
i've done scaling , and dont know ow to plot em next.. heres my coding
Java Code:import java.io.*; class fourier extends operations { fourier(String filename, int ntrm) { boolean debug = true; double Pi = 3.1415926535897932384626433832795028841971; double x[] = new double[100]; double y[] = new double[100]; double a[] = new double[100]; double b[] = new double[100]; double xmin, xmax, ymin, ymax, xs, xs1, xs2; double err, avgerr=0.0, rmserr=0.0, maxerr=0.0; double sum, sumsq=0.0; int npts, index, last; double tpi = 2.0*Pi; double dx, ti; FileReader file_in; BufferedReader in; String input_line, intStr; // read data try { file_in = new FileReader(filename); in = new BufferedReader(file_in); } catch(Exception e) { System.out.println("read unable to open file "+filename); return; } npts = 0; try { input_line = in.readLine(); // System.out.println("line="+input_line); while(input_line!=null) { index = 2; // x allow for two blanks last = input_line.indexOf(' ',index); // System.out.println("xindex="+0+", xlast="+last); intStr = input_line.substring(0,last); // System.out.println("xstring="+intStr); x[npts] = Double.parseDouble(intStr); index = last+1; // y last = input_line.length(); // System.out.println("yindex="+index+", ylast="+last); intStr = input_line.substring(index,last); // System.out.println("ystring="+intStr); y[npts] = Double.parseDouble(intStr); if(debug) System.out.println("npts="+npts+", x="+x[npts]+", y="+y[npts]); npts++; input_line = in.readLine(); // System.out.println("line="+input_line); } file_in.close(); } catch(Exception e) { System.out.println("read exception"+e); return; } if(ntrm==-1) ntrm = npts; ntrm = Math.min(ntrm,(npts-2)/2); System.out.println(npts+" points read, using "+ntrm+" terms"); xmin = x[0]; xmax = x[0]; ymin = y[0]; ymax = y[0]; for(int j=1; j<npts; j++) { xmin = Math.min(x[j],xmin); xmax = Math.max(x[j],xmax); ymin = Math.min(y[j],ymin); ymax = Math.max(y[j],ymax); } System.out.println("xmin="+xmin+", xmax="+xmax+ ", ymin="+ymin+", ymax="+ymax); // integration, simple trapezoidal rule System.out.println("coefficients"); for(int i=0; i<ntrm; i++) { a[i] = 0.0; b[i] = 0.0; ti = (double)i; for(int j=0; j<npts-1; j++) { xs1 = (x[j]-xmin)/(xmax-xmin); xs2 = (x[j+1]-xmin)/(xmax-xmin); dx = xs2-xs1; a[i] = a[i] + dx*(y[j]*Math.cos(ti*tpi*xs1)+y[j+1]* Math.cos(ti*tpi*xs2)); b[i] = b[i] + dx*(y[j]*Math.sin(ti*tpi*xs1)+y[j+1]* Math.sin(ti*tpi*xs2)); } System.out.println("a["+i+"]="+a[i]+", b["+i+"]="+b[i]); } System.out.println(" "); // check fit for(int j=0; j<npts; j++) { sum = 0.0; sumsq = 0.0; xs = (x[j]-xmin)/(xmax-xmin); for(int i=0; i<ntrm; i++) { ti = (double)i; sum = sum + a[i]*Math.cos(ti*tpi*xs) + b[i]*Math.sin(ti*tpi*xs); } err = y[j]-sum; sumsq = sumsq + err*err; avgerr = avgerr + Math.abs(err); maxerr = Math.max(Math.abs(err),maxerr); if(debug) System.out.println("y["+j+"]="+y[j]+", approx="+sum+ ", err"+err); } rmserr = Math.sqrt(sumsq/(double)npts); avgerr = avgerr/(double)npts; System.out.println("avgerr="+avgerr+", rmserr="+rmserr+", maxerr="+maxerr); System.out.println("fourier.java finished "); } // end constructor fourier public static void main (String[] args) { String filename; int ntrm = -1; int argc = args.length; System.out.println("fourier.java running "); if(argc>1) // file and ntrm { filename = new String(args[0]); ntrm = Integer.parseInt(args[1]); System.out.println("fourier series of "+filename+" for "+ntrm+" terms"); new fourier(filename, ntrm); } else if(argc>0) // just file, all terms { filename = new String(args[0]); System.out.println("fourier series of "+filename+" for all terms"); new fourier(filename, ntrm); } else { ntrm = 6; filename = new String("curve.dat"); System.out.println("fourier series of "+filename+" for "+ntrm); new fourier(filename, ntrm); } } // end main } // end class fourier class operations extends fourier { public static int a1[i],b1[i],as[i],bs[i]; void scaling(a[],b[]){ a1[i]=(a[i]-0)/(2*math.PI-0);//dmax is 2pi dmin is zero b1[i]=(b[i]-0)/(1-0);//cmax is 1 cmin is zero as[i]=a1[i]*(SXmax-SXmin)+SXmin ; //sxmin,max not set yet,... will set it based on screen values.. bs[i]=b1[i]*(SYmax-SYmin)+SYmin; } }Last edited by Fubarable; 03-04-2012 at 07:24 PM. Reason: code tags added
- 03-04-2012, 08:49 PM #35
- Join Date
- Sep 2008
- Location
- Voorschoten, the Netherlands
- Posts
- 11,589
- Blog Entries
- 7
- Rep Power
- 17
Re: sine wave in java2D graphics.
If you have arrays 'sx' and 'sy' containing the scaled points and if you have a Graphics object 'g' (so you have something to draw on), all you have to do is 'connect the dots':
Read the API documentation for the Graphics class for details.Java Code:for (int i= 1; i < sx.length; i++) g.drawLine(sx[i-1], sy[i-1], sx[i], sy[i]);
kind regards,
JosWhen people rob a bank they get a penalty; when banks rob people they get a bonus.
- 03-04-2012, 08:52 PM #36
- 03-04-2012, 09:00 PM #37
- Join Date
- Sep 2008
- Location
- Voorschoten, the Netherlands
- Posts
- 11,589
- Blog Entries
- 7
- Rep Power
- 17
- 03-04-2012, 09:01 PM #38
- 03-06-2012, 01:24 PM #39
- 03-06-2012, 01:27 PM #40
- Join Date
- Sep 2008
- Location
- Voorschoten, the Netherlands
- Posts
- 11,589
- Blog Entries
- 7
- Rep Power
- 17
Similar Threads
-
Do number series represent sine wave?
By rng in forum New To JavaReplies: 12Last Post: 01-18-2012, 03:46 PM -
sine and cosine
By Dennis in forum Advanced JavaReplies: 9Last Post: 11-13-2010, 05:45 AM -
Java2D
By Alex j in forum Java 2DReplies: 1Last Post: 04-07-2009, 04:59 PM -
Drawing the sine curve
By bumblyb33 in forum Java 2DReplies: 7Last Post: 03-26-2009, 10:29 PM -
Demonstration of drawing points. It draws a sine wave
By Java Tip in forum SWTReplies: 0Last Post: 06-28-2008, 09:25 PM


14Likes
LinkBack URL
About LinkBacks
Reply With Quote

Bookmarks