Separating Axis Theorem (SAT)

I have been search for what seems like hours, and I still have not managed to find anybody or anything that can clearly answer these three questions:
1. What is SAT?
2. How does it apply to 2D collision detection? (How would it be different with 3D collision detection?)
3. How can this be implemented in Java using Shape objects?
Note: I am easily confused by geometric terminology.

.java wrote:
I have been search for what seems like hours, Nice try, but in less than 15 seconds I found a complete discussion on the subject.
and I still have not managed to find anybody or anything that can clearly answer these three questions:
1. What is SAT?
2. How does it apply to 2D collision detection? (How would it be different with 3D collision detection?)
3. How can this be implemented in Java using Shape objects?
Note: I am easily confused by geometric terminology.This really looks like a question you should have an answer for in your notes from class, or in your book. If not perhaps you need to go ask your teacher what it is and explain why you don't have it in your notes or book.

Similar Messages

  • Collisions (Separating Axis Theorem)

    Hi,
    I'm working on a 2D game, it's top-down like GTA2, but I'm havinfgproblems with the collision detector. I know there are a lot of posts about collision already but they didn't help me much. I'm using the separating axis theorem (explained here: http://www.harveycartel.org/metanet/tutorials/tutorialA.html#section1) and most of the code is inspired by http://www.codeproject.com/cs/media/PolygonCollision.asp .
    Separating axis theorem:
    find all axis perpendicular to all the edges of both objects,
    project both objects on the axis,
    if there is an axis where the projections do not overlap, then the objects do not overlap.
    The problem is that I think my code should work. And guess what, it doesn't. I checked the code 30 times this weekend but maybe there is some tiny mistake I overlook each time..
    When I run the program with 6 objects I get this:
    1 2 3 4 5 6
    1: - 0 0 0 0 0
    2: 0 - 1 0 0 0
    3: 0 1 - 0 0 0
    4: 0 0 0 - 0 0
    5: 0 0 0 0 - 0
    6: 0 0 0 0 0 - (1=intersect, 0=doesn't intersect)
    but this is completely wrong. You can run the program yourself to see the exact locations of the objects.
    1 is the triangle at the top,
    2 and 3 are the triangles who share an edge
    4 is the one on the left intersecting with 3
    5 is the triangle on the right
    6 is the parallelogram
    But it really gets weird when I add a 7th object (the one in the comments):
    1 2 3 4 5 6 7
    1: - 0 0 0 0 0 0
    2: 0 - 0 0 0 0 0
    3: 0 0 - 0 0 0 0
    4: 0 0 0 - 0 0 0
    5: 0 0 0 0 - 0 0
    6: 0 0 0 0 0 - 0
    7: 0 0 0 0 0 0 -
    Now 2 and 3 don't intersect anymore! They didn't change I just added another object.
    I'm adding a short explanationof all the classes and the code itself. I know it's a lot of code but I added all the test classes so you can just run Test.Test
    I hope someone can help me with this.
    Thanks,
    El Bandano
    _<h5>package CollisionDetector:</h5>_
    <h6>CollisionDetector</h6>
    The class that is supposed to check for collisions. It will take 2 Props and return a CollisionResult
    <h6>CollisionResult</h6>
    A small class with 2 public fields. For now only the boolean Intersect matters.
    <h6>Interval</h6>
    Another small class that represents an interval of floats. It's pretty simple. Distance should return something negative if 2 intervals overlap.
    _<h5>package World</h5>_
    <h6>MovableProp</h6>
    An interface of an object. All objects should be convex.
    <h6>Vector2D</h6>
    A 2D-vector. It has an x and a y value (floats) and some simple methods. a 2D vector can represent a point or an edge/axis. For a point the x and y are the coordinates. For an axis you need a normalized vector (x^2+y^2=1) and the x and y are coordinates on a parrallell line through (0,0).
    _<h5>package Test</h5>_
    <h6>Test</h6>
    The main class. It makes some objects, prints a matrix showin which intersect eachother and shows a window with all objects.
    <h6>TestMovProp</h6>
    A basic implementation of MovableProp.
    <h6>TestPanel</h6>
    A panel that draws MovableProp.
    _<h5>package CollisionDetector:</h5>_
    <h6>CollisionDetector</h6>
    package CollsisionDetector;
    import World.MovableProp;
    import World.Vector2D;
    import java.util.ArrayList;
    public class CollisionDetector {
        public CollisionDetector(){
        public CollisionResult DetectCollision(MovableProp propA, MovableProp propB) {
            CollisionResult result = new CollisionResult();
            result.Intersect = true;
            result.WillIntersect = true;
            Vector2D[] edges = UniqueEdges(propA, propB);
            // loop through the edges
            // find an axis perpendicular to the edge
            // project the props on the axis
            // check wether they intersect on that axis
            for (Vector2D edge: edges){
                Vector2D axis = edge.getPerpendicular();
                Interval intA = projectPointsOnAxis(propA.getCoordinates(), axis);
                Interval intB = projectPointsOnAxis(propB.getCoordinates(), axis);
                if (intA.distance(intB) > 0)
                    result.Intersect = false;
            return result;
        public Interval projectPointsOnAxis(Vector2D[] points, Vector2D axis){
            Interval i = new Interval();
            for (Vector2D p: points)
                i.add(projectPointOnAxis(p, axis));
            return i;
        public float projectPointOnAxis(Vector2D point, Vector2D axis){
            // axis <-> y=a*x
            float a  = axis.y / axis.x;
            // line <-> y=(-a/1)*x+b
            float a2 = -axis.x / axis.y;
            // b = y-a2*x
            float b = point.y - a2*point.x;
            // y = a *x
            // y = a2*x + b
            // => a*x = a2*x + b
            float x = b/(a-a2);
            float y = a*x;
            // is there a better way to do this?
            return new Float(Math.sqrt(x*x + y*y)).floatValue();
         * Put all edges in 1 array, eliminate doubles (parallels).
        public Vector2D[] UniqueEdges(MovableProp propA,MovableProp propB){
            Vector2D[] aEdges = propA.getEdges();
            Vector2D[] bEdges = propB.getEdges();
            ArrayList<Vector2D> tmp = new ArrayList<Vector2D>();
            for (Vector2D v: aEdges){
                tmp.add(v);
            for (Vector2D v: bEdges){
               if (! tmp.contains(v))
                    tmp.add(v);
            return tmp.toArray(new Vector2D[tmp.size()]);
    }<h6>CollisionResult</h6>
    package CollsisionDetector;
    import World.Vector2D;
    public class CollisionResult {
        public boolean WillIntersect;
        public boolean Intersect;
        public Vector2D MinimumTranslationVector;
        public CollisionResult() {
    }<h6>Interval</h6>
    package CollsisionDetector;
    public class Interval {
        public float min;
        public float max;
        public Interval() {
            min = Float.MAX_VALUE;
            max = Float.MIN_VALUE;
        public void add(float f){
            // no 'else'! In an empty interval both will be true
            if (f>max)
                max = f;
            if (f<min)
                min = f;
        public float distance(Interval interval){
            if (this.min < interval.min) {
                return interval.min - this.min;
            } else {
                return this.min - interval.min;
    }_<h5>package World</h5>_
    <h6>MovableProp</h6>
    package World;
    public interface MovableProp {
        public int getNPoints();
        public Vector2D[] getEdges();
        public Vector2D[] getCoordinates();
    }<h6>Vector2D</h6>
    package World;
    public class Vector2D {
        public float x;
        public float y;
        public Vector2D(float x, float y) {
            this.x = x;
            this.y = y;
        public boolean equals(Object obj){
            if (!(obj instanceof Vector2D)){
                return false;
            }else
                return (this.x == ((Vector2D)obj).x && this.y == ((Vector2D)obj).y);
        public String toString() {
            return ("Vector2D  x=" + x + " ,  y=" + y);
        public void normalize(){
            if (x*x + y*y != 1){
                float x2 = x;
                x /= Math.sqrt(x2*x2+y*y);
                y /= Math.sqrt(x2*x2+y*y);
        public Vector2D getPerpendicular(){
            Vector2D per = new Vector2D(-y,x);
            per.normalize();
            return per;
    }_<h5>package Test</h5>_
    <h6>Test</h6>
    package Test;
    import CollsisionDetector.CollisionDetector;
    import World.MovableProp;
    import java.awt.Polygon;
    import java.util.ArrayList;
    import java.util.Vector;
    import javax.swing.JFrame;
    public class Test {
        public static void main(String args[]) {
            CollisionDetector detect = new CollisionDetector();
            float[] x = new float[3];
            float[] y = new float[3];
            ArrayList<MovableProp> list = new ArrayList<MovableProp>();
            x[0] = 200; x[1] = 300; x[2] = 500;
            y[0] = 400; y[1] = 200; y[2] = 300;
            list.add(new TestMovProp(x,y));
            x[0] = 300; x[1] = 500; x[2] = 600;
            y[0] = 400; y[1] = 400; y[2] = 500;
            list.add(new TestMovProp(x,y));
            x[0] = 200; x[1] = 300; x[2] = 600;
            y[0] = 600; y[1] = 400; y[2] = 500;
            list.add(new TestMovProp(x,y));
            x[0] = 100; x[1] = 200; x[2] = 300;
            y[0] = 800; y[1] = 500; y[2] = 700;
            list.add(new TestMovProp(x,y));
            x[0] = 600; x[1] = 600; x[2] = 700;
            y[0] = 400; y[1] = 700; y[2] = 500;
            list.add(new TestMovProp(x,y));
    //        x[0] = 100; x[1] = 001; x[2] = 900;
    //        y[0] = 001; y[1] = 900; y[2] = 500;
    //        list.add(new TestMovProp(x,y));
            x = new float[4];
            y = new float[4];
            x[0] = 450; x[1] = 550; x[2] = 500; x[3] = 400;
            y[0] = 200; y[1] = 250; y[2] = 650; y[3] = 600;
            list.add(new TestMovProp(x,y));
            int n = list.size();
            boolean[][] matrix = new boolean[n][n];
            for (int i=0; i<n; i++){
                for (int j=0; j<n; j++){
                    if (i!=j)
                    matrix[i][j] = detect.DetectCollision(list.get(i),list.get(j)).Intersect;
            System.out.print("  ");
            for (int i=0; i<n; i++){
                System.out.print("  " + (i+1));
            for (int i=0; i<n; i++){
                System.out.print("\n" + (i+1) + ":  ");
                for (int j=0; j<n; j++){
                    if (i==j)
                        System.out.print("-  ");
                    else if (matrix[i][j])
                        System.out.print("1  ");
                    else
                        System.out.print("0  ");
            System.out.println();
            JFrame window = new JFrame();
            window.setDefaultCloseOperation(window.EXIT_ON_CLOSE);
            window.pack();
            window.setVisible(true);
            window.setContentPane( new TestPanel(list));
            window.pack();
    }<h6>TestMovProp</h6>
    package Test;
    import World.MovableProp;
    import World.Vector2D;
    public class TestMovProp implements MovableProp{
        float[] X;
        float[] Y;
        Vector2D[] coor;
        public TestMovProp(float[] x, float[] y) {
            X=x; Y=y;
            coor = new Vector2D[getNPoints()];
            for(int i=0; i< getNPoints(); i++){
                coor[i] = new Vector2D(X, Y[i]);
    public Vector2D[] getCoordinates(){
    return coor;
    public int getNPoints() {
    return X.length;
    public Vector2D[] getEdges() {
    int n = getNPoints();
    Vector2D[] v = new Vector2D[n];
    for (int i=0; i<n-1; i++){
    v[i] = new Vector2D(X[i]-X[i+1], Y[i]-Y[i+1]);
    v[i].normalize();
    v[n-1] = new Vector2D(X[0]-X[n-1], Y[0]-Y[n-1]);
    v[n-1].normalize();
    return v;
    public String toString() {
    String s = "\n";
    for (Vector2D v: getCoordinates())
    s += ("\n" + v);
    return s;
    <h6>TestPanel</h6>package Test;
    import World.MovableProp;
    import World.Vector2D;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Polygon;
    import java.util.ArrayList;
    import javax.swing.JPanel;
    public class TestPanel extends JPanel {
    public ArrayList<MovableProp> list;
    public TestPanel(ArrayList<MovableProp> list) {
    super();
    this.list = list;
    setPreferredSize(new Dimension(1000,850));
    public void paint(Graphics g) {
    super.paint(g);
    for (MovableProp prop:list){
    Vector2D[] coor = prop.getCoordinates();
    int n = prop.getNPoints();
    g.drawLine((int)coor[0].x, (int)coor[0].y, (int)coor[n-1].x, (int)coor[n-1].y);
    for (int i=0; i<n-1; i++){
    g.drawLine((int)coor[i].x, (int)coor[i].y, (int)coor[i+1].x, (int)coor[i+1].y);

    .java wrote:
    I have been search for what seems like hours, Nice try, but in less than 15 seconds I found a complete discussion on the subject.
    and I still have not managed to find anybody or anything that can clearly answer these three questions:
    1. What is SAT?
    2. How does it apply to 2D collision detection? (How would it be different with 3D collision detection?)
    3. How can this be implemented in Java using Shape objects?
    Note: I am easily confused by geometric terminology.This really looks like a question you should have an answer for in your notes from class, or in your book. If not perhaps you need to go ask your teacher what it is and explain why you don't have it in your notes or book.

  • Remove thousands separator from chart (x, y axis)

    Dear all,
    my first application is almost completed, but some finishings are still missing.
    E.g. the display of the year in the chart contains thousands separator. How they can be removed or avoided? Any idea?
    Thank you so much!
    Mehtap

    Hi Tammy,
    thanks. But this does not seem to work for Calendar Year.

  • OBIEE 11G: Can I set limit on number of ticks only on horizontal axis and zoom in if I want to?

    Hello
    Is there a way I can restrict the total number of ticks on horizontal axis only? Say I want to set it to show only 24 ticks on horizontal axis. I am putting date and hour on the horizontal axis, if I take 3 dates of data, I will have 3X24 = 72 ticks on the chart, but I want the chart to show only 24 ticks. So it's pretty much ticks for 3 hours on the horizontal chart in this case.
    Can this be done?
    Second, if the first can be done, then can I then zoom in to any ticks on the horizontal axis, and it would show be the break down of this ticks, which is made up with 3 hour's performance separately?
    Thanks

    The zooming feature was ok, but what if I want to zoom in on just a specific area between the ticks when only 1 click?
    Any thoughts?

  • Problem accessing Application Ejb Jar files from Apache Axis jars

    I have deployed an EAR application, with a structure as shown below,
    MyApp.ear
    |____ MyApp_Ejb.jar
    |____ axis.war
    |_____ WEB-INF
    |_____ lib (This contains all axis specific jars)
    The application deploys just fine. But when i goto happyaxis.jsp and try to view all the web services that have been deployed. I get an exception "No provider type matches QName '{http://xml.apache.org/axis/wsdd/providers/java}SDL".
    Here SDL is a custom provider that i have written and all the required files for the provider are available in MyApp_Ejb.jar.
    I do not get as to why the axis.jar is not able to find classes in MyApp_Ejb.ear, when both these are in the same ear.
    Now i know i can add a utility jar to a war files classpath by adding a classpath line in the War file MANIFEST.MF. But since MyApp_Ejb.jar is defined as a Web Module this solution too doesnt help.
    Separating the provider related files from MyApp_Ejb.jar is not possible since there is too much dependance of other files within that jar.
    So i am looking for a solution where in i can continue to have MyApp_Ejb.jar as my ejb module as well as the axis related jars can find the required classes within MyApp_Ejb.jar. some way of sharing the ejb jar across to axis jars.
    Thanks in advance.
    Vicky

    I have deployed an EAR application, with a structure as shown below,
    MyApp.ear
    |____ MyApp_Ejb.jar
    |____ axis.war
    |_____ WEB-INF
    |_____ lib (This contains all axis specific jars)
    The application deploys just fine. But when i goto happyaxis.jsp and try to view all the web services that have been deployed. I get an exception "No provider type matches QName '{http://xml.apache.org/axis/wsdd/providers/java}SDL".
    Here SDL is a custom provider that i have written and all the required files for the provider are available in MyApp_Ejb.jar.
    I do not get as to why the axis.jar is not able to find classes in MyApp_Ejb.ear, when both these are in the same ear.
    Now i know i can add a utility jar to a war files classpath by adding a classpath line in the War file MANIFEST.MF. But since MyApp_Ejb.jar is defined as a Web Module this solution too doesnt help.
    Separating the provider related files from MyApp_Ejb.jar is not possible since there is too much dependance of other files within that jar.
    So i am looking for a solution where in i can continue to have MyApp_Ejb.jar as my ejb module as well as the axis related jars can find the required classes within MyApp_Ejb.jar. some way of sharing the ejb jar across to axis jars.
    Thanks in advance.
    Vicky

  • Mac Pro Compatibility With Older SATA Drives And DVI Connectors

    I soon plan to replace my 5 year old G5 with a new Mac Pro and need two questions answered so that I will know what options i have for the transfer of older data and apps. The Apple web site for the Mac Pro includes the following paragraph which gives me reason for concern:
    Your Mac Pro includes four drive bays, allowing you to configure it with
    up to 8 terabytes of storage using 7200-rpm Serial ATA 3Gb/s drives, up
    to 2 terabytes of storage using high-performance solid-state drives, or
    any combination of each type of drive. Configure each drive bay
    separately.
    Does the phrase "using 7200-rpm Serial ATA 3Gb/s drives" mean that the Mac Pro will ONLY work with 3Gb/s drives or that it performs best with 3Gb/s drives?
    I currently have two internal SATA 250/300 GB Maxtors (Maxtor 7Y250M0 and Maxtor 6B300S0... both are 7200 RPM but I don't know the data transfer speed). Ideally I would get a Mac Pro with a single 1 TB drive, move one or both of these older SATA drives to the new computer, one temporarily and the other permanently in order to transfer data and Apps to the new machine. If this is not possible then the new machine will need to wait until after I get a new larger FW external drive to use as a data transfer medium (I had planned to do that anyhow). I need to do some advance planning for this so I need to know what to expect in advance. I noticed this possible wording ambiguity on Apple's description of the Mac Pro long ago, but now I need to find out the answer for sure. Apple, you need to be more specific with your words.
    Can anybody answer this question for me?
    My second question regards display connectors. Does the standard (no bucks added) display card include a standard DVI connector or only the newer Mini-DVI connectors. I think I see a standard DVI connector in the low res picture of the back of the Mac Pro but am unsure. My 5 year old Apple display bit the dust a year ago and I had to replace it with an HP 2009m display (mumble grumble) which does use a standard DVI connector. A new Apple display is too rich for my blood so I plan to continue using the HP display for now and need to find out if I will need a display adapter to go with it.
    Many thanks to anyone who can answer these questions authoritatively.
    For anyone who asks why I still run 10.3.9 on my G5, I can only answer response speed. New OS versions always act like a lead anchor on a machine with their added overhead and Tiger really does feel like a ball and chain tied to me... it just does not reaspond as fast as I do. I look forward to the speed of a new machine.
    Phil Rogers
    --

    Does the phrase "using 7200-rpm Serial ATA 3Gb/s drives" mean that the Mac Pro will ONLY work with 3Gb/s drives or that it performs best with 3Gb/s drives?
    Any commercial sATA drive will do just fine. 7200 RPM is not a requirement.
    WD "Green" drives have caused user complaints about "long delay until ready" when installed inside a Mac Pro, but are fine for backups.
    You are making the leap from PowerPC to Intel Mac. Eventually, you should re-initialize your old drives to GUID partition table for best responsiveness.
    Migrating your System will not be possible. Use the pre-installed System or Install a new System on a GUID-partitioned drive with the release DVD in the box.
    Migrating your Applications is a Bad Idea. You should plan on re-installing all your third-party Applications from their release discs.

  • I have new hard drive in macbook pro(08) and have SATA cable with external power source to old hard drive (10.5.8)via. USB port and newer drive(10.6.8) will not recognize older drive..Do I need to partition newer drive with older disk to recover data?

    I have new HD 750GB Hybrid in 2008 Macbook Pro 17" w/ Snow Leopard 10.6.8  connected to old Hard drive(250GB that had 10.5.8 on it at time of failure) via SATA cable to USB port with external power source.. Computer not acknowledging old HD at all in Disk Utility or otherwise (that I'm aware of)..Do I need to partition New HD and load old(10.5.8) onto partition to recognize older drive for data recovery? Thanks Wayno08

    You do not need to load 10.5.8 onto your new drive in order for a 10.6.8 system to see the contents of a 10.5.8 system.
    You might want to check out the hard drive troubleshooting bootk in the downloads section of this web site:
    http://scsc-online.com
    They also sell a product named Phoenix that can do OS extraction  and volume copying/cloning, but to be honest I don't know if it's appropriate in this case.
    I would suggest the following:
    Open up Terminal.app (under utilities) and type "diskutil list" without the quotes. This is the command line version of Disk Utility. If the external drive doesn't show up at all, then it's likely not connected properly, not getting power, or just plain dead. If it shows up with only a devce name like disk0s16 but no volume it means the drive is seen, the OS just can't make sense of it.
    Assuming the drive shows up, I would try to boot off the original installl disks for the system and run Disk Utility from that. I'm assuming the drive will show up. You'll want to select the option to repair the drive and then perform the option to repair the permissions.
    If the unit isn't showing up, as per step 1, try a different USB port. More importantly with your unit, try it on another side of the unit if possible. If you read the book I referenced above, some of those units have I/O boards that are separated from the logic board. If the cable from the logic board to the I/O card goes bad or has problems, which isn't all that uncommon, some or all of the ports on the I/O card may appear to be bad as well. If you use a USB port on another side, it would be routing out of a completely different I/O path, so that's a potential problem.
    If the drive is only seen with a device name such as disk0s16, it's likely either the index files are corrupt beyond Disk Utility's ability to see them. The  only thing that I think would help would be a product named DIsk Warrior, but I can't guarantee that.
    Disk Warrior can be found at:
    http://www.alsoft.com/diskwarrior/
    The company that I linked in the first link above also makes a product named Scannerz that does HD and system testing. The Scannerz/Disk Warrior combination make a good pair because the complement each other....Scannerz does what Disk Warriror can't and Disk Warrior does what Scannerz can't. However, at this point I'm not too sure getting a tool like Scannerz would be of much use because it sounds like the  damage has already been done.
    Let us know what happens.

  • Q ab. Hard Drive upgrade; PATA/SATA, S.M.A.R.T., HDD Controler

    I have a few questions about replacement hard drives for my PowerBook G4 12" 1.0 GHz DVI. (I am also going to upgrade the hard drive in my wife's Powerbook G4 15" 1.33 GHz Combodrive, but I think the questions/answers below will apply to both. I'll just deal with my 12" for ease here.)
    I have read Apple's specifications and searched all over to find detailed information about ATA ratings and compatibility, and I'm still in the dark about a few things. I'm interested in a 160GB or a 250GB internal drive to replace my 80GB (which did come standard as an optional feature, although this is my second 80GB--I burned the first one before my Applecare expired), and I'm looking at the following drives, for instance:
    HITACHI Travelstar 5K160 HTS541616J9AT00 (0A28419) 160GB 5400 RPM 8MB Cache ATA-6 Notebook Hard Drive - OEM
    http://www.newegg.com/Product/Product.aspx?Item=N82E16822146200
    Western Digital Scorpio WD2500BEVE 250GB 5400 RPM 8MB Cache ATA-6 Notebook Hard Drive - OEM
    http://www.newegg.com/Product/Product.aspx?Item=N82E16822136159
    Questions:
    1. HDD Controller limit to internal drive capacity: I've read that older powerbooks (whatever this means, it wasn't specified) may have a 128GB limit, supposedly meaning that the HDD controller will only recognize 128GB on an internal drive. Anyone know if this is true? How do I find out? It isn't published on Apple's spec page for my machine. And, if such a limit does exist for my machine, can I install a 160 GB and get the full 128GB? (b/c a 120GB will only give me 100+ usable after all.) Will the fact that the drive is lager than the total recognizable amount mess up the cataloging, data retrieval, reliability, stability...?
    2. ATA-100 vs. ATA-6 vs. ATA-7 vs. PATA vs SATA. My present 80GB TOSHIBA MK8025GAS just says ATA in the System Profiler "Protocol" field for the ATA drive. I presume that the SATA is a later, more recent, non-backwards-compatible format/pin configuration/?. I presume the 100 refers to the 100mb/s data transfer rate, which is what the Apple specifications have for my machine. The drives I am looking at, by and large, are rated at 100mb/s. They all have other specifications, however (ATA-6, ATA-7), and I am hoping to hear that they do NOT refer to pin configuration differences.
    -Q- will PATA and SATA drives both fit my machine, or does the "Ultra ATA/100 hard drive" listed in the Apple Specs for my machine mean that the pin configuration/compatibility will only work with PATA drives? Thus, Is Parallel ATA what I have and need?!?! Will a faster SATA drive work in my machine? Would I be able to swap it out into a MacBook Pro when I upgrade next year? (i.e. are SATA drives &/or boards backwards compatible with PATA drives? And are PATA drives &/or boards forward compatible?)
    3. S.M.A.R.T. verification capability. I am unclear as to whether this capability is essential and which drives provide it. Some information states that Hitachi Travelstar drives DO support S.M.A.R.T. verification, but such is not listed on their information about the drives. My present 80GB Toshiba DOES have this capability, so System Profiler says. Before my previous drive failed, SMART notification may have saved me (though it's unclear if it actually made any difference--it's just notification, after all, right?), alerting me that the drive was failing and thus giving me enough time to get the last bit of un-backed-up data off the drive before it died altogether. (This is a presumption based on changing S.M.A.R.T. status notifications in System Profiler and from Disk Utility Repair Disk reports). In fact, however, I don't really know what SMART verification is, and thus I don't know how important it is.
    -Q- How important is S.M.A.R.T. verification capability? And what is it really?
    -Q- which manufactures support it?
    Many, many thanks for any insight.

    Jeremy:
    does, that the Seagate Ultra ATA/100 which I'm about to buy will not work with an Intel-based Mac?
    Your Intel-based Mac needs a Serial ATA (SATA) HDD instead of ATA or ultraATA, PATA etc. Not knowing the specs of your IntelMac select your Intel Mac here and navigate to your Model for a list of compatible HDDs.
    I do intend to install them myself. I haven't had this G4 open, but I put 2 HDDs in my previous G3 without issue, so I think I'll brave it, armed with iFixit instructions.
    Since you have done it before, this addition may be superfluous, but here are few tips you may find helpful:
    • Print out the ifixit directions as well as the screw guide ahead of time.
    • Be sure you have the right tools. You don't want to damage the screw heads or you may never get them out. And the correct size Torx screw driver is critical.
    • I use small medicine cups one for the screws in each step. I nest them so that the last ones out and the first to go back in are on top. You can use an ice cube tray, egg carton, dixie cups etc. (Some users report cutting up the screw guide and placing the applicable section in each container.)
    • Be very careful pulling out leads. Hold the lead as close to the plug as possible and wiggle (the plug ) to loosen its grip. Don’t hold the wires and pull as that can damage the cable, or worse, in some instances pull the wires out of the plug. Indeed, some users have pulled the socket off the logic board! Use needle nose pliers or tweezers if you can access the plug, or nudge the plug with a small instrument to help loosen its grip.
    • Use force gently in removing parts. Separating upper and lower case takes some doing. Use a plastic tool (spudge) so as not to leave marks.
    • Refer to the screw guide when reassembling computer. Putting longer screws in the wrong place can perforate the circuit board.
    Please do post back with further questions or comments.
    Cheers
    cornelius
    PS: Thank you for leaving feedback in Apple Discussions by marking the "solved" post.

  • Unequal size of X, Y, Z axis for 3D graph

    Hi,
    I have different size of array in X, Y and Z axis. What graph should I use best? I tried using 3D surface graph but it consume all my memory.
    My data is X = 1 X 41 array
    Y = 1 X 32768 array
    Z = 41 X 32768 array/matrix
    Thanks a lot...

    Samuel S wrote:
    That is also correct
    Ben Im not going to lie that is a great song! I have that from the 1996 Rhythm of the Games Olympic Soundtrack 
    My Mother used to play the Sound Track from the Movie (Peter O'Toole and Sophia Loren) and it left a mark on me but that was nothing until I sat up all night with a case of beer and the movie on VHS so I could rewind and memorize the words.
    Don Quiote is what keeps me from pulling a John Galt and the signature is there to remind me.
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Axis in Pie Graph

    Hi,
    Can we show the X-Axis and Y-Axis for a Pie-Graph??
    I am able to display the Pie-Graph for a given combination through VO but in my display i am not able to see the X-Axis and Y-Axis lines.
    only the graph is getting displayed without the lines.
    I have tried by setting in property inspector the following properties to true.
    "Data Axis Scale From Zero" and "Display Data Markers" both to true
    But still i am not able to see the lines in my screen.
    Can i get some help from anyone regarding this???
    Thanks in advance

    No, there is no provision of showing x and y axis in pie graph. I am still not able to understand how do you want to incorporate and map date on x,y axis along with a pie graph in between. All you can do is to plot a bar graph separately to show the data along x, y axis.
    --Shiv                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Flex Date Time Axis Not showing Correct Values

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
       xmlns:s="library://ns.adobe.com/flex/spark"
       xmlns:mx="library://ns.adobe.com/flex/halo" width="700" height="500">
    <fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script>
    <![CDATA[
    import mx.collections.ArrayCollection;
    [Bindable]
    public var stockDataAC:ArrayCollection = new ArrayCollection( [
    {date: "2005, 7, 27", close: 41.71},
    {date: "2005, 7, 28", close: 42.21},
    {date: "2005, 3, 29", close: 42.11},
    {date: "2005, 1, 1", close: 42.71},
    {date: "2005, 10, 2", close: 42.99},
    {date: "2005, 9, 3", close: 44} ]);
    public function myParseFunction(s:String):Date {
    // Get an array of Strings from the comma-separated String passed in.
    var a:Array = s.split(",");
    // Create the new Date object. Subtract one from the month property.
    // The month property is zero-based in the Date constructor.
    var newDate:Date = new Date(a[0],a[1]-1,a[2]);
    return newDate;
    ]]>
    </fx:Script>
    <mx:Panel title="DateTimeAxis Example" height="100%" width="100%">
    <mx:LineChart id="mychart" height="100%" width="100%"
      paddingRight="5" paddingLeft="5"
      showDataTips="true" dataProvider="{stockDataAC}">
    <mx:horizontalAxis>
    <mx:DateTimeAxis dataUnits="days" parseFunction="myParseFunction"/>
    </mx:horizontalAxis>
    <mx:verticalAxis>
    <mx:LinearAxis baseAtZero="false" />
    </mx:verticalAxis>
    <mx:series>
    <mx:LineSeries yField="close" xField="date" displayName="AAPL"/>
    </mx:series>
    </mx:LineChart>
    </mx:Panel>
    </s:Application>
    the above code shows reverse values of date on date axis i.e it should show 01/05 2/05 3/05 4/05 but its showing 10/05 09/05 08/05 07/05 on date axis.
    Please help.

    I've seen this bug in Adobe's JIRA so nothing much you can do for now   DateTimeAxis is quite bugged.
    By the way, is it me or mx:datavisu is on low priority these days ? Maybe the team is working on a spark version ?
    https://bugs.adobe.com/jira/browse/FLEXDMV-2231

  • Non uniform intervals in the X-axis of LineChart

    Hi,
    I am using a Flex3 Line chart which takes data from an External XML file.
    But I dont get the DataTip points correctly if i give some numeric values in the X values and
    even then, the values in the X-axis starts from the "0"th position and the interval between the "0"th & 1st value (in X axis) is half of the others (shown in red bar in the attached image) and also for the last one.
    How to have the uniform intervals in the X-axis so that the DataTip shows correct values as in the data?
    Below is the MXML & the XML I use:
    The MXML:
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" backgroundColor="0xFFFFFF" creationComplete="fetchData();">
    <mx:HTTPService id="myServ" url="TempChartData.xml" fault="faultHandler(event)"/>
    <mx:Script>
    <![CDATA[
         import mx.controls.Alert;
         import mx.rpc.events.*;    
         import mx.controls.ToolTip;
         //Trigger the HTTPService to fetch data from the back-end
         public function fetchData():void
              myServ.send();
         public function faultHandler(event:FaultEvent):void
              Alert.show(event.fault.message);
    ]]>
    </mx:Script>
    <mx:LineChart id="myChart" width="100%" height="100%" showDataTips="true" dataProvider="{myServ.lastResult.tasks.task}">
         <mx:horizontalAxis>
              <mx:CategoryAxis id="myHorzAxis" categoryField="name" title="My Tasks"/>
         </mx:horizontalAxis>
         <mx:verticalAxis>
              <mx:LinearAxis title="My Data Values"/>
         </mx:verticalAxis>
         <mx:horizontalAxisRenderers>
              <mx:AxisRenderer axis="{myHorzAxis}" labelRotation="45"/>
         </mx:horizontalAxisRenderers>
         <mx:series>
              <mx:LineSeries id="myLineSeries1" xField="name" yField="Value">
              </mx:LineSeries>
         </mx:series>
    </mx:LineChart>
    </mx:Application>
    TempChartData.XML
    <?xml version="1.0" encoding="utf-8"?>
    <tasks usl="25" lsl="-75">
        <task name="1">
            <Value>-115</Value>       
        </task>
        <task name="2">
            <Value>-112</Value>       
        </task>
        <task name="3">
            <Value>-100</Value>       
        </task>   
        <task name="4">
            <Value>0</Value>       
        </task>
        <task name="5">
            <Value>-74</Value>       
    </task>
        <task name="6">
        <Value>0</Value>
        </task>
        <task name="7">
        <Value>-67</Value>
        </task>
    </tasks>

    Please do not post VIs with infinite loops (at least without informing us that they work that way)! The loop should have a stop button on the front panel wired to the stop terminal in the loop. If you use the Abort button to stop the VI, the file never gets closed.
    A long time Forum participant has said that: "Using the Abort button to stop a VI is like using a tree to stop a car. It works but may have unintended consequences!"
    To get the format you want after reading you need to convert the first column in the spreadsheet file from a date-time string to a numeric which can be interpretted by the graph as a timestamp. With the format you have chosen for the file it is somewhat complicated. Spend some time reading the detailed help for the timestamp and string format functions.
    In the VI attached the file is read as string. The first column is separated into 7 numerical values to create a date-time record (cluster) which is then converted to a timestamp and then to DBL. The second column is converted to an array of DBL. The arrays are bundled and connected to an XY graph. The graph X-Axis is formatted as Absolute Time, AM/PM, HH:MMS. You can add the fractional seconds if you want but the scale starts to get crowded.
    Also, the error out wires from the property nodes used to initialize the graphs should be wired to the loop to assure that they execute first.
    Lynn
    Attachments:
    test_3.2.vi ‏26 KB

  • Problem in Axis installation

    Hi,
    I am stuck at Step 6 of Axis installation guide found at http://ws.apache.org/axis/java/install.html
    Step 6: Deploying your Web Service
    I have done everything as said like I am setting the environment variables as follows:
    set AXIS_HOME=E:\Java Web Services\axis
    set AXIS_LIB=%AXIS_HOME%\lib
    set AXISCLASSPATH=%AXIS_LIB%\axis.jar;
                %AXIS_LIB%\commons-discovery-0.2.jar;
                      %AXIS_LIB%\commons-logging.jar;
                      %AXIS_LIB%\jaxrpc.jar;
                      %AXIS_LIB%\saaj.jar;
                      %AXIS_LIB%\log4j-1.2.8.jar;
                      %AXIS_LIB%\xml-apis.jar;
                      %AXIS_LIB%\xercesImpl.jarI have separated the jar files here by a new line character just for clear visibility.
    I am running following command from the samples/stock directory
    java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost:7000/axis/services/AdminService deploy.wsddI have my server running at port 7000.
    Everything seems fine but I am getting the following error
    Exception in thread "main" java.lang.NoClassDefFoundError: WebCan anybody help,
    Thanks,
    WBAJ*

    hi..
    I am a niwebie in 'AXIS' . but i had correctly installed it without any problem
    with the help of 'apache.axis.install.pdf' and also tested the examples
    under 'samples\userguide' directoy provided with 'AXIS'.
    Later ,I wanted to run a 'build.xml' file created of my own to run the
    'example3' project under a diffrent directory and configured the 'build.xml'
    accordingly. I succeded but after then .. I could not run any of the examples.
    When i tried to run any 'CLIENT' file from command prompt ....
    " h:\axis\samples\stock > java -cp %AXISCLASSPATH%
    org.apache.axis.client.AdminClient
    -lhttp://localhost:8080/axis/services/AdminService deploy.wsdd
    It works. but if i run..
    h:\axis\samples\stock > java org.apache.axis.client.AdminClient
    -lhttp://localhost:8080/axis/services/AdminService deploy.wsdd
    it shows me
    ''Exception in thread "main" java.lang.NoClassDefFoundError:
    org/apache/axis/client/AdminClient ''
    This is same for all the examples.
    I can't anticipate .. what the problem may be. For ur convenience .. i here
    provide all the classpaths...
    JAVA_HOME H:\Java\j2sdk1.5.0
    AXIS_HOME H:\tomcat\webapps\axis
    AXIS_LIB %AXIS_HOME%\web-inf\lib
    AXISCLASSPATH %AXIS_LIB%\axis.jar;
    %AXIS_LIB%\axis-ant.jar;%
    AXIS_LIB%\commons-discovery-0.2.jar;
    %AXIS_LIB%\commons-logging-1.0.4.jar;
    %AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;
    %AXIS_LIB%\log4j-1.2.8.jar;
    %AXIS_LIB%\xml-apis.jar;
    %AXIS_LIB%\xercesImpl.jar;
    %AXIS_LIB%\xmlsec.jar;
    %AXIS_LIB%\activation.jar;
    %AXIS_LIB%\mailapi_1_3_1.jar;
    H:\tomcat\common\lib\servlet.jar;
    %AXIS_LIB%\wsdl4j-1.5.1.jar;
    %AXIS_LIB%\xmlParserAPIs.jar
    CLASSPATH .;%AXISCLASSPATH%;h:\Java\classes
    It's really urgent for me... i'll be grateful to u if u pls can give any solution .

  • JDeveloper 10.1.3.3.0:  Problem with Apache Axis 1.4 response handler

    I have written both a request handler and a response handler for calling a web service using Apache Axis 1.4.
    The request handler is working, but when the web service returns a soap fault, my response handler is not getting called (I have set breakpoints in both the "onFault" and "invoke" methods of the response handler, which extends "org.apache.axis.handlers.BasicHandler").
    Here is what my WSDD looks like:
    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
       <transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender"/>
       <globalConfiguration>
          <requestFlow>
             <handler name="MyRequestHandler" type="java:com.mycompany.MyRequestHandler"/>
          </requestFlow>
          <responseFlow>
             <handler name="MyResponseHandler" type="java:com.mycompany.MyResponseHandler"/>
          </responseFlow>
       </globalConfiguration>
    </deployment>Thanks!
    Jonathan
    Edited by: user1993443 on Mar 6, 2009 9:03 AM

    The OC4J version with comes in jdeveloper has instaled ADF, is a version prepared to test your aplications and well ready for that.
    The OC4J standalone version is this [http://www.oracle.com/technology/tech/java/oc4j/index.html] and is downloaded separately here [http://www.oracle.com/technology/software/products/ias/htdocs/utilsoft.html] .
    The structured folder of the OC4J standAlone is never is contended inside Jdeveloper folder and when you try to install ADF with ADF runtime installer you only need to map to your OC4J folder base.
    Good Luck.

  • Chart Issue,  tooltip separator / on custom XML sustitution not working

    I did not find the way to declaratively change the Tooltip label separator in the chart, I see the XML contains this:
    <tooltip_settings enabled="true">
                <format><![CDATA[{%Name}{enabled:False} - {%Value}The problem is the "-" minus sign as separator between the label and the value - even if the Y axis show where the 0 is, some user might see them as negative number.
    On option is to use custom XML. In that case, since I'm using &ITEM_NAME. in the chart title, this is not replaced.
    Any idea how to overcome on these issue?
    Thanks,
    Peter

    I did not find the way to declaratively change the Tooltip label separator in the chart, I see the XML contains this:
    <tooltip_settings enabled="true">
                <format><![CDATA[{%Name}{enabled:False} - {%Value}The problem is the "-" minus sign as separator between the label and the value - even if the Y axis show where the 0 is, some user might see them as negative number.
    On option is to use custom XML. In that case, since I'm using &ITEM_NAME. in the chart title, this is not replaced.
    Any idea how to overcome on these issue?
    Thanks,
    Peter

Maybe you are looking for

  • I am trying to use livetype with persian alphabet and it doesn't work. what should I do?

    I am trying to use livetype with persian alphabet and it doesn't work. what should I do?

  • How to deactivate the fields in a table control of a standard screen

    Hi,    I have an requirement to deactivate the fields in a table control of a standard screen in ME22n transaction.I am using a BADI "ME_PROCESS_PO" and in item mathod i am looping at screen for the screen field name in the table control.But it is no

  • Load data from flat file to target table with scheduling in loader

    Hi All, I have requirement as follows. I need to load the data to the target table on every Saturday. My source file consists of dataof several sates.For every week i have to load one particular state data to target table. If first week I loaded AP d

  • IPad Airplay Issue - iOS 8

    I work for a K-12 school district.  Teachers often use airplay and the app AirServer on our macs to mirror their iPad on their mac.  This has worked great, until iOS 8.  On iPads with iOS 8+, when you click on the airplay button in Control Center, th

  • At selection screen out put

    Hi all, I have 2 radiobuttons and one parameter. my requirement is if i select one radio button one default value has to be assige if i select anoth radiobuton another value has to be assign. can any one help regarding this thanks and regards vamsi n