Concept of circular interpolation

Hi,
I'm interested in knowing the concepts / formulas / algorithms invovled in circular interpolation. Suppose I give the position where the I have to reach in a 2-D plane and the radius of the circular arc, then the controller feeds the X-axis drive with a sequence of position commands which follow a mathematical function and at the same time, the controller also feeds another set of position commands to Y-axis, which follow another mathematical function. Also the velocities of X-axis and Y-axis follow two seperate mathematical functions. The combination of all these mathematical functions executed simultanously results in an interpolation. This is my understanding of circular interpolation. I am interested in knowing these four functions for X position, Y-position, X-Velocity and Y-Velocity. Kindly help me out with this. Kindly let me know if my understanding of the concept is wrong and what may be right approach to this problem. I do not want to use the arc vi provided by NI as it takes 'start angle', 'travel angle' and 'radius', but I want to feed 'start position', 'final position' and 'radius' to achieve th arc.
Regards,
Giridhar Rajan
Automation Engineer
Cruiser Controls
Mumbai, India

Hello,
The National Instruments supported method for generating a circular arc move is to use Load Circular Arc.flx.  However, it is perfectly possible to generate your own interpolation algorithm.  I would suggest that you take a look at the following link for a starting point in generating move data:
Command Generation
http://www.control.com/control_com/Papers/CommandGeneration_html
This is a third-party interpolation algorithm, but it may be helpful in developing your own method.
Regards,
Scott R.
Applications Engineer
National Instruments

Similar Messages

  • Circular interpolation in NI motion controllers

    Hi all,
    This is a question for all the experienced motion control programmers using NI's motion controllers with LabVIEW. This is about circular interpolation. NI provides a VI for making a circular arc. Now, The issue is that this VI takes in angles instead of co-ordinates. For any user who wishes to give a command to a two axis system, visualizing something in terms of angles is very difficult. Also having an interpolation command in terms of angles is unconventional for a motion controller. It should always and always be in terms of co-ordinates. Why has NI gone for this unconventional approach for such a simple feature and how can I suggest this necessary improvement to NI.
    Regards,
    Giridhar Rajan
    Automation Engineer, Design
    Cruiser Controls
    Mumbai, India

    Giridhar,
    As you noted there are numerous ways to calculate arc moves and in the development of our algorithms NI chose to use angular notation to characterize a circular arc move.  I would agree with you completely that it would be very useful to have a function that would take coordinates instead of angles to calculate a circular arc move.  National Instruments is always interested in receiving feedback on our products and welcome them as part of our dedication to continual improvement.  I will file this product suggestion through our channels here and would request that you also submit a product suggestion.  You can do so by going to ni.com and clicking on the gray "Contact NI" button and filling out the product feedback form.   Thank you for your time and for this valuable suggestion.
    Regards,
    S. Arves S.
    National Instruments
    Applications Engineer

  • Circular arc challenge

    Hi,
    This is an amazing motion control challnge that I'm putting forward to u guys. I am currently using NI PCI7344 motion controller for 3 axis + spindle motion control system. Before this I have used Fanuc and Fagor CNC controllers which understand G-codes and M-codes. Now, in my application, I want to do simple two axis circular interpolation to draw an arc. LabVIEW provides a VI for drawing an arc. We need to provide the "Start angle", "Travel angle" and "Radius" for drawing an arc using that VI. I'm trying to develop a VI, where I feed the "target position", "radius" and "Clock Wise/Anticlock Wise" to draw an arc. The fanuc and fagor controllers provide this facility. Lets see how NI can compete with them. My application involves parsing and transalation of G-codes and M-codes. If this is done, then using my application, a user can feed the same G-codes and M-codes that are understood by Fanuc and Fagor CNC controllers. This will help eliminate CNC and make people buy PC Based controllers. In this way engineers all over the world, who are conversant with G-codes and M-codes can easily shift towards PC Based control which is much easy to use and upgrade. Hence its a challenge for all motion control guys in NI to try implement this one and proide me with a VI.  
    Regards,
    Giridhar Rajan
    Automation Engineer,
    Cruiser Controls
    Mumbai, India

    Hi Giridhar,
    It sounds like you have a great understanding of how our arc move VI's work.  Using LabVIEW it is definitely possible to write and implement code that would translate target position, radius, and direction parameters to the start angle, travel angle, and radius parameters need to perform arc moves using our functions.  We at National Instruments provide LabVIEW as a flexible tool that can be used to write programs that can take user input and convert that data to parameters that can be used by our hardware.  We in the Applications Engineering department are here to support the software, functions, and hardware that we provide, but we can't write custom programs for our customers.  With your understanding of how our motion VI's work, it should be a simple matter of adding extra LabVIEW code to your VI to translate the parameters.  Good luck and have a great day.
    Michael Chaney
    Systems Engineer - TestStand
    National Instruments

  • Discussion on simple / complex machine tools applications

    Hi all,
    This is the place for all machine tool guys in the industry. Kindly feel free to tell us abt. your machine tools applications, simple or complex, general or special purpose. Also don't hesitate to ask any questions abt. machine automation using LabVIEW and NI motion control products.
    Best of Luck.
    Regards,
    Giridhar Rajan
    Automation Engineer
    Cruiser Controls
    Mumbai, India

    This is to remind everyone that the Circular Arc Challenge is still open. Here's the question again below. Check it out. Lets see who solves it.
    Hi,
    This is an amazing motion control challnge that I'm putting forward to u guys. I am currently using NI PCI7344 motion controller for 3 axis + spindle motion control system. Before this I have used Fanuc and Fagor CNC controllers which understand G-codes and M-codes. Now, in my application, I want to do simple two axis circular interpolation to draw an arc. LabVIEW provides a VI for drawing an arc. We need to provide the "Start angle", "Travel angle" and "Radius" for drawing an arc using that VI. I'm trying to develop a VI, where I feed the "target position", "radius" and "Clock Wise/Anticlock Wise" to draw an arc. The fanuc and fagor controllers provide this facility. Lets see how NI can compete with them. My application involves parsing and transalation of G-codes and M-codes. If this is done, then using my application, a user can feed the same G-codes and M-codes that are understood by Fanuc and Fagor CNC controllers. This will help eliminate CNC and make people buy PC Based controllers. In this way engineers all over the world, who are conversant with G-codes and M-codes can easily shift towards PC Based control which is much easy to use and upgrade. Hence its a challenge for all motion control guys in the industry to try implement this one and provide me with a VI.  
    Regards,
    Giridhar Rajan
    Automation Engineer,
    Cruiser Controls
    Mumbai, India

  • Free circular gauge control

    Download: http://www.beaugauge.com/download/en/free/BeauGaugeActiveXControls.zip
    Use circular gauge ActiveX control in your LavView project
    http://www.beaugauge.com/en/edu036.htm
    For additional resources, please visit the website.
    http://www.beaugauge.com

    In case of std price yr stock will get updated with this price whatever may be the case..
    MAP--in this case whatever the current price of posting stock will be added to previous price with this current price..
    This is the concept of MAP & STD price..

  • Package concept?

    Hi,
    I am confusing how to understand the term "package" in javacard.
    Is it similar concept in java? example, java.lang, java.io, ... are packages?
    if they are packages then do they have AIDs ?
    my own thought, the concept of package in javacard is not the same as in normal java. Package must have AID, and two different packages must have two different AID. Two same "package name, example java.lang", might belong to different packages.
    thanks,
    Hoang Long
    Edited by: CardM on Jul 11, 2011 2:24 AM

    safarmer wrote:
    Hi,
    You must start from the bottom up dependency wise. You can not have packages that have circular references. I have commented on this recently but it is to do with CAP file load order on the card.
    You can convert packages with sub packages but each package is converted individually regardless of if they are nested.
    Cheers,
    ShaneIn short, if i have 2 java packages: java.A and java.A.B
    There is no circular references. java.A uses classes in java.A.B. Am i able to convert java.A to CAP file without pre-converting java.A.B?
    (I am using converter companion with java card dev kit 2.2)
    ps: is there any conversion issue if i have deeper level of inheritance?
    thanks for your help,
    Hoang Long

  • Doubts in GeoRaster Concept.

    Hi everybody,
    I have few doubts in GeoRaster concepts.
    I did mosaicing of multiple Georasater objects using "sdo_geor.getRasterSubset()" and able to display image properly. But while doing this I come across few people suggestions. They said that mosaicing multiple rows together in a GeoRaster table is not going produce meaningful results because the interpolation methods wont have access to the data in the adjacent cells at the seams because cell needed exist in a different row (i.e. where two rows of GeoRaster either abut or overlap).
    I assume Oracle takes care of all this. Please suggest wheather my assumption is true or the statement given is true?
    Regards,
    Baskar
    Edited by: user_baski on May 16, 2010 10:49 PM

    Hi Jeffrey,
    Requirements:-
    I have to do mosaicing of 'n' number of Georaster objects. For eg, if table has 4 rows of GeoRaster object, then i have to create single image by mosaicing all the Georaster object based on the Envelope provided. (Note: I have to do this with Queries without using GeoRaster API)
    Workflow:-
    1. Get the connection and table details.
    2. Retrieve necessary information from the db like SRID, MAXPYRAMID, SPATIALRESOLUTION, EXTENT etc. For getting extent, I used SDO_AGGR_MBR function.
    3. With the help of "MDSYS.SDO_FILTER" and bouding box values, I create arraylist which contains raster id's retrieved from raster data table which covers the bouding box value provided in the filter command.
    4. Then I passed bounding box value into "sdo_geor.getCellCoordinate" function and I retrieved row and column number of Georaster image and created a number array which contains starting and ending row/column numbers.
    5. Then I had written a PL/SQL with "sdo_geor.getRasterSubset" function which takes the number array and raster id as input parameters, which inturn returns BLOB object.
    6. I am executing step 5 in a loop with all the raster id's that I got at step 3. For eg, arraylist size is 4, then I will have four BLOB object.
    7. Finally, I creating new image from the BLOB objects after some scaling and cropping based on the individual GeneralEnvelope of each raster id object.
    I had followed all the above steps and successfully created mosaic image.However, few people suggested that mosaicing in this way does not produce meaningful results because the interpolation methods wont have access to the data in the adjacent cells at the seams because cell needed exist in a different row. I assume Oracle will take care of these things. Moreover, they suggested to keep single row in GeoRaster table instead of muliple rows of Georaster object and suggested to use "SDO_GEOR.updateRaster" function to update a part of the raster object and the pyramids are rebuild automatically.
    So Please suggest which is the better way to do mosaicing. Wheather my assumption is correct or not?

  • Fastest array operations on a 2D circular buffer

    I'm trying to create a a type of circular buffer on large-ish set of 2d data which are samples of voltage from a data acquisition board.  The boards are Measurement Computing and a lot of the nice programming features built into DAQmx for NI boards aren't easily available to me.
    I'm grabbing chunks of samples, 1000 per channel * 64 channels, every 100ms.  I'm calling this a 'page'.  For each page of samples I take a median for noise filtering and then I publish this median for multiple threads to use.  I also want to be able to string together pages of samples as if it were one longer data acquisition, for up to 30 seconds.  I'm doing it this way because the threads that are expecting their data every ~100ms can't release these AI boards for long periods of time to allow other threads to use them to perform long scans.  The data coming back from my boards is a 2D array.
    I have enough RAM available to pre-allocate the memory to hold all these pages and I've been playing with the In Place structures for awhile now and I haven't been able to land on the magical combination that will allow me to replace any page in the buffer.  It's easy enough using the subarray option of the in Place to replace either the first page or the last page but it gets more complicated to do a page somewhere in the middle without having to resort to Case statements.  I tried to do it with nested In Place structures but it seems as if the subarrays that get created in the lower levels already go out of scope by the time the top level gets it assigned and I just get jibberish on the output side.  Does this make sense?

    SmokeMonster wrote:
    I tried to do it with nested In Place structures but it seems as if the subarrays that get created in the lower levels already go out of scope by the time the top level gets it assigned and I just get jibberish on the output side.  Does this make sense?
    Sorry, but at least to me, this doesn't make sense.  Can you post your code?  I can't see how "out of scope" is a concept that applies here - LabVIEW keeps track of the memory for you and should never lose track of memory that's still in use.
    I posted one approach to a 2D circular buffer; maybe it's of some use to you.

  • How to use circular linked list in pl/sql?

    Hi all,
    how to use the circular linked list on pl/sql programming.
    thanks in advance
    Rgds,
    B@L@

    d balamurugan wrote:
    Hi,
    I needed this concept for the below example
    TABLE_A have the columns of
    ID COL_1 COL_2 COL_3 COL_4 COL_5 COL_6 COL_7
    1....Y.........N........N.........Y........ N........N........ N
    2....N.........N....... N.........Y.........N........N.........Y
    in the above data
    for id 1 i will need to take the value for COL_4, then i will check the next availability of Y through out through out the remaining columns, so next availability is on COL_1 so, i need to consider COL_4 which already Y and also i need to consider COL_5, COL_6, COL_7 as Y.
    for id 2 if i need COL_7 then i need to come back on circular way and need to check the next availability of Y and need to take the columns having N before the next availability of YAnd... even after all that description... you haven't given any indication of what the output should look like.
    Taking a wild guess on my part... something like this would do what you appear to be asking...
    SQL> ed
    Wrote file afiedt.buf
      1  with t as (select 1 as id, 'Y' as col1, 'N' as col2, 'N' as col3, 'Y' as col4, 'N' as col5, 'N' as col6,'N' as col7 from dual union all
      2             select 2, 'N', 'N', 'N', 'Y', 'N', 'N', 'Y' from dual)
      3  --
      4  -- END OF TEST DATA
      5  --
      6  select id
      7        ,rcol
      8        ,case when instr(cols,'Y',rcol+1) = 0 then instr(cols,'Y')
      9              else instr(cols,'Y',rcol+1)
    10         end as next_Y_col
    11  from   (select id, rcol, col1||col2||col3||col4||col5||col6||col7 as cols
    12          from t, (select &required_col as rcol from dual)
    13          where id = &required_id
    14*        )
    SQL> /
    Enter value for required_col: 4
    old  12:         from t, (select &required_col as rcol from dual)
    new  12:         from t, (select 4 as rcol from dual)
    Enter value for required_id: 1
    old  13:         where id = &required_id
    new  13:         where id = 1
            ID       RCOL NEXT_Y_COL
             1          4          1
    SQL> /
    Enter value for required_col: 7
    old  12:         from t, (select &required_col as rcol from dual)
    new  12:         from t, (select 7 as rcol from dual)
    Enter value for required_id: 2
    old  13:         where id = &required_id
    new  13:         where id = 2
            ID       RCOL NEXT_Y_COL
             2          7          4
    SQL>If that's not what you want... then it's time you started learning how to ask questions properly.

  • Circular Dynamic Queue

    I was wondering how to make a dynamic queue circular. I thought that maybe I should keep track of how many Nodes there are (by adding 1 to an int variable tracker initially at zero each time a Node is added) and then when it reaches the limit (chosen by user) it would add no more Nodes. Then, I though that to make it circular, then I should check for when the tracker has reached that limit, and instead of making the next Node variable in the last Node null, it should be simply the first Node. I know that what I have written is extremely confusing, but if you understand the concept of Nodes, queues, and what the heck I'm talking about, then at least explain what a circular queue should look like. Thanks.

    I was wondering how to make a dynamic queue circular.Why make it circular if it's dynamic? What you probably want is a FIFO (first-in-first-out) queue. One common implementations is to use a linked list. You add nodes at the end and remove them from the front. LinkedList even have methods for that.
    The other common implementation is a circular buffer. You use a static array with a fixed length. You keep two indexes. One is pointing at the first free position. It's where you add a node and increment the index. The other is pointing at the last element. It's where you remove a node and increment the index. When an index becomes larger than the array size it "wraps" to zero. That's why it's called circular.
    I've posted an implementation here,
    http://forum.java.sun.com/thread.jspa?forumID=256&threadID=477885

  • Oracle Concepts!!

    (ORACLE CONCEPT DOCS.)
    Log Writer (LGWR)..writes to files on the redo log files on the disk
    Database Writer (DBWn)...writes to files on Data file on the disk
    Log Writer Process (LGWR)
    The log writer process (LGWR) is responsible for redo log buffer
    management—writing the redo log buffer to a redo log file on disk.
    The redo log buffer is a circular buffer. When LGWR writes redo entries from the
    redo log buffer to a redo log file, server processes can then copy new entries over
    the entries in the redo log buffer that have beenwritten to disk.
    When a user issues a COMMIT statement, LGWR puts a commit record in the redo
    log buffer and writes it to disk immediately, along with the transaction’s redo
    entries. The corresponding changes to data blocks are deferred until it is more
    efficient to write them. This is called a fast commit mechanism. The atomic write of
    the redo entry containing the transaction’s commit record is the single event that
    determines the transaction has committed. Oracle returns a success code to the
    committing transaction, although the data buffers have not yet been written to disk.
    When a user commits a transaction, the transaction is assigned a system change
    number (SCN), which Oracle records along with the transaction’s redo entries in
    the redo log. SCNs are recorded in the redo log so that recovery operations can be
    synchronized in Oracle9i Real Application Clusters and distributed databases.
    so what happens in the mean time if somebody pulls plug of electricity..Data has been written to online redo files not on DATA files...so after a restart which oracle process makes/copies entire new values of commited transactions to DATA files from online redo files?

    SMON
    SMON process performs instance recovery during startup by using the online redo log files.
    When a user issues a COMMIT statement, LGWR puts a
    commit record in the redo
    log buffer and writes it to disk immediately, along > with the transaction’s redo
    entries. I think the above statement is false.evethough commit is done,it will not write immediately to data files.It will make the transactions much slower.change will take effect on datafiles only once checkpoint is happening.
    Can anyone verify this?
    ~

  • Help Implementing a queue as a circular linked list...

    I have a set of code that I need to implement a circular linked list into, but I am not sure how to approach it at all. If anyone can point me to some pseudo code or sample code that I can modify for my use, that would be great.
    I created a Class CircularQueue, which implements Queue, I just need to figure out how to write it.
    Heres the code I have:
    Queue Interface
    public interface Queue<ElementType> {
         public void enqueue(ElementType e);
         public ElementType dequeue();
         public ElementType front();
         public boolean isEmpty();
    Data Holder
    public class DataHolder<ElementType> {
         // instance variables
         private ElementType _data;
          * Constructor for objects of class DataHolder
         public DataHolder() {
              _data = null;
         public void setContents(ElementType anItem) {
              _data = anItem;
         public ElementType getContents() {
             return _data;
    DeqeueButton
    import javax.swing.*;
    import java.awt.event.*;
    public class DequeueButton extends JButton {
        // instance variables
        private Queue<SmartRectangle> _queue;
        private QueuePanel _queuePanel;
         * Constructor for objects of class DequeueButton
        public DequeueButton(QueuePanel aQueuePanel) {
            super("Dequeue");
            _queuePanel = aQueuePanel;
            _queue = aQueuePanel.getQueue();
            this.addActionListener(new DequeueButtonListener());
        private class DequeueButtonListener implements ActionListener {
            private final int MOVE_LENGTH = 25;    // square size + 5
            public void actionPerformed(ActionEvent e) {
                _queue.dequeue();   // remove item from queue
                _queuePanel.repaint();
    EnqueueButton
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class EnqueueButton extends JButton {
        // instance variables
        private Queue<SmartRectangle> _queue;
        private QueuePanel _queuePanel;
         * Constructor for objects of class EnqueueButton
        public EnqueueButton(QueuePanel aQueuePanel) {
            super("Enqueue");
            _queuePanel = aQueuePanel;
            _queue = _queuePanel.getQueue();
            this.addActionListener(new EnqueueButtonListener());
        private class EnqueueButtonListener implements ActionListener {
            private int _nextX, _nextY;
            private final int SQUARE_SIZE = 20;
            private final int MAX_X = 550;
            private final int MAX_Y = 350;
            private Color _currentColor;
            public EnqueueButtonListener() {
                _currentColor = Color.BLUE;
                _nextX = MAX_X;
                _nextY = MAX_Y;
            public void actionPerformed(ActionEvent e) {
                _queue.enqueue(new SmartRectangle(_nextX, _nextY, SQUARE_SIZE, SQUARE_SIZE, _currentColor, _queuePanel));
                this.changeColor();
                _nextX -= (SQUARE_SIZE+5);  // location of next square in line
                if (_nextX < 0)     // if we reach edge of window, wrap
                {   _nextY -= (SQUARE_SIZE+5);
                    _nextX = MAX_X;
                if (_nextY < 0)     // start over
                    _nextY = MAX_Y;
                _queuePanel.repaint();
            public void changeColor() {
                if (_currentColor == Color.BLUE)          
                    _currentColor = Color.RED;
                else if (_currentColor == Color.RED)      
                    _currentColor = Color.GREEN;
                else if (_currentColor == Color.GREEN)    
                    _currentColor = Color.YELLOW;
                else if (_currentColor == Color.YELLOW)   
                    _currentColor = Color.BLACK;
                else if (_currentColor == Color.BLACK)    
                    _currentColor = Color.BLUE;
    FrontButton
    import javax.swing.*;
    import java.awt.event.*;
    public class FrontButton extends JButton {
        // instance variables
        private Queue<SmartRectangle> _queue;
        private QueuePanel _queuePanel;
         * Constructor for objects of class DequeueButton
        public FrontButton(QueuePanel aQueuePanel) {
            super("Front");
            _queuePanel = aQueuePanel;
            _queue = aQueuePanel.getQueue();
            this.addActionListener(new FrontButtonListener());
        private class FrontButtonListener implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                SmartRectangle rectangle = _queue.front();    // remove item from queue
                SmartRectangle displayRect = _queuePanel.getDisplayFrontRect();
                if (rectangle != null)
                    displayRect.setColor(rectangle.getColor());
                _queuePanel.repaint();
    QueueApp
    import javax.swing.*;
    import java.awt.*;
    public class QueueApp extends JFrame
         * Constructor for objects of class QueueApp
        public QueueApp(String title)
            super(title);
            this.setSize(600,450);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            QueuePanel queuePanel = new QueuePanel();
            javax.swing.JPanel buttonPanel = new JPanel(new FlowLayout());
            buttonPanel.add(new EnqueueButton(queuePanel));
            buttonPanel.add(new DequeueButton(queuePanel));
            buttonPanel.add(new FrontButton(queuePanel));
            this.add(queuePanel, BorderLayout.CENTER);
            this.add(buttonPanel, BorderLayout.SOUTH);
            this.setVisible(true);     
        public static void main (String [] args)
            QueueApp app = new QueueApp("Queues at work: Object Oriented implementation.");
    QueuePanel
    import javax.swing.*;
    import java.awt.*;
    public class QueuePanel extends javax.swing.JPanel {
        // instance variables
        private Queue<SmartRectangle> _queue;
        private SmartRectangle _frontRect;
         * Constructor for objects of class QueuePanel
        public QueuePanel() {
            super();
            _queue = new CircularQueue<SmartRectangle>();
            _frontRect = new SmartRectangle(50,50,20,20,Color.WHITE, this);
       public Queue<SmartRectangle> getQueue() {
           return _queue;
       public SmartRectangle getDisplayFrontRect() {
           return _frontRect;
       public void paintComponent(Graphics aBrush) {
           super.paintComponent(aBrush);
           Graphics2D aBetterBrush = (Graphics2D) aBrush;
           Queue<SmartRectangle> tempQueue = new CircularQueue<SmartRectangle>();
           if (_frontRect.getColor() != this.getBackground())
               _frontRect.fill(aBetterBrush);
           while (!_queue.isEmpty()) {       // remove and display contents
               SmartRectangle rectangle = _queue.dequeue();
               rectangle.fill(aBetterBrush);
               tempQueue.enqueue(rectangle);
           while (!tempQueue.isEmpty()) {    // put contents back into _queue
               _queue.enqueue(tempQueue.dequeue());
           _frontRect.setColor(this.getBackground());
    SmartNode
    public abstract class SmartNode<ElementType> {
         public abstract boolean isEmpty();
         public abstract SmartNode<ElementType> dequeue(DataHolder<ElementType> aHolder);
         public abstract void front(DataHolder<ElementType> aHolder);
         public void enqueue(ElementType anItem){}
         public void setNext(SmartNode<ElementType> aNode) {
         }  // override as needed
         public void setPrev(SmartNode<ElementType> aNode) {
         }  // override as needed
    SmartRectangle
    import javax.swing.*;
    import java.awt.*;
    import java.awt.geom.*;
    public class SmartRectangle extends Rectangle2D.Double {
        // instance variables
        private JPanel _panel;
        private Color _color;
         * Constructor for objects of class SmartRectangle
        public SmartRectangle(int x, int y, int aWidth, int aHeight, Color aColor,
                              JPanel aPanel) {
            super(x, y, aWidth, aHeight);
            _panel = aPanel;
            _color = aColor;
        public void setLocation (int x, int y) {
            this.setFrame(x, y, this.getWidth(), this.getHeight());
        public Color getColor() {
            return _color;
        public void setColor(Color aColor) {
            _color = aColor;
        public void fill(Graphics2D aPaintBrush) {
            Color savedColor = aPaintBrush.getColor();
            aPaintBrush.setColor(_color);
            aPaintBrush.fill(this);
            aPaintBrush.setColor(savedColor);
    }

    > Yea I think I understand the concept of it, but I
    dont know what the code is supposed to look like.
    Showing you what the code is supposed to look like would be effectively giving you the answer, which kind of defeats the purpose of "extra credit". Have you tried anything so far? Post what you've got, and we can give you hints on how to work through it. I thought some of the descriptions here were very explicit hints, but if you need some additional guidance, let us know your specific questions (other than "show me the code").
    Good luck!
    ~

  • Free goods concept in STO

    hi all,
    i have an issue regarding free goods for STO betn plants.
    our concept is to give free goods for ex- 10 out of 100 are free goods.
    when i am creating a po with item catagory U, the free goods indicator is become vanice. so i am unable to process this free goods.
    so if any settings is thr , then pls let me know.
    regards,
    susanta

    hi
    ru selling ur goods to ur plant?
    in sto ur not selling the material to ur plant
    so the issue of free goods is not there
    thats why u cant see any kind of basic cost condition in that
    as the material is transfer from one plant to another the inventory changes and so the the price in material master is get updated for the another plznt
    refer following docs
    with delivery
    http://help.sap.com/bp_blv1600/V5600/BBLibrary/HTML/134_EN_IN.htm
    without  delivery
    http://help.sap.com/bp_blv1600/V5600/BBLibrary/HTML/135_EN_IN.htm
    hope it clears
    regards
    kunal
    award if helpful

  • Concept of free –m command in Linux

    I wanted to know the concept of free –m command as there are different rows of Mem, -/+ buffers/cache & Swap in the output. As an example, it is showing 195 as free Mem in my server but 13850 in the free section of the -/+ buffers/cache. The output needs in depth knowledge of the different parameters of the command.
    I hope, my question is clear.
    Please revert with the reply to my query.
    Regards

    This is my understanding. used and free column in line 2 can be used to find out total used and free memory for applications
    [oracle@test ~]$ free
    total used free shared buffers cached
    Mem: 264122724 253692112 10430612 0 2074864 178696468
    -/+ buffers/cache: 72920780 191201944
    Swap: 8388600 0 8388600
    select 264122724/1024/1024 "Total RAM" FROM DUAL; (264122724 ---from line 1 Mem)
    Total RAM
    251.887058
    select (253692112-(2074864+178696468)) "used for applications" from dual; (used from line 1 - (buffers + cached) from line 1)
    used for applications
    --------------------- (matches with used from line 2)
    72920780
    select 10430612+2074864+178696468 "total free for applications" from dual;
    total free for applications
    191201944 (matches with free from line 2)
    Edited by: vlethakula on Jan 17, 2013 7:18 AM

  • HR-ABAP-Infotypes concept

    Hi Masters,
                           Can you please let me know the perfect reason for infotypes concept in HR-ABAP.
    1 Why we are using infotypes and exactly what is purpose?
    2.Why we are using LDB's why cannot we extract data directly from database tables?
    3.Can you please give me clear explanations about these infotypes.

    Hi
    Infotype(s) are used in the Personnel Management (PA) module primarily. This is where personnel master data is stored. Data is grouped according to subject matter. The Human Resources component aims to enable the user to process employee data in an effective structure in accordance with business requirements. The data structure of infotypes mirrors a logical set of data records. Infotypes can be identified by their four-digit keys, for example, the Addresses infotype (0006). To facilitate reporting on past employee data, infotypes can be saved for specific periods.
    Some people use the term HR ABAP to describe the method of managing the infotype data. Typically HR logical databases are used which offers more secure methods of accessing the infotype data. Once the infotypes are declared, you can use standard macros to access the data. Table TRMAC holds the macro name and the code behind it. This makes developing HR programs much quicker and easy to turn around.
    HR uses INFOTYPES instead of tables.
    There are different sub modules exist in HR.
    For Personal Admn the Infotypes start with PA0000 to PA1999
    Time Related Infotypes start with PA2000 to PA2999.
    Orgn related Infotypes start with HRP1000 to HRP1999.
    All custom developed infotypes stsrat with PA9000 onwards.
    In payroll processing we use Clusters like PCL1,2,3 and 4.
    Instead of Select query we use PROVIDE and ENDPROVIDE..
    You have to assign a Logical Database in the attributes PNP.
    Go through the SAp doc for HR programming and start doing.
    http://www.sapdevelopment.co.uk/hr/hrhome.htm
    See:
    http://help.sap.com/saphelp_46c/helpdata/en/4f/d5268a575e11d189270000e8322f96/content.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/bb/bdb041575911d189240000e8323d3a/frameset.htm
    see this link you would get information about types of infotypes
    Logical databases are special ABAP programs that retrieve data and make it available toapplication programs. The most common use of logical databases is still to read data fromdatabase tables by linkin them to executable ABAP programs.
    Logical databases contain Open SQL statements that read data from the database.You do not therefore need to use SQL in your own programs. The logical database reads theprogram, stores them in the program if necessary, and then passes them line by line to theapplication program or the function module LDB_PROCESS using an interface work area .
    For further info
    check link http://help.sap.com/saphelp_nw70/helpdata/en/9f/db9b5e35c111d1829f0000e829fbfe/frameset.htm
    1. A logical database is in fact
    a program only.
    2. This LDB provides two main things :
    a) a pre-defined selection screen
    which handles all user inputs and validations
    b) pre defined set of data
    based upon the user selection.
    3. So we dont have to worry about from
    which tables to fetch data.
    4. Moreover, this LDB Program,
    handles all user-authorisations
    and is efficient in all respects.
    5. tcode is SLDB.
    /people/srivijaya.gutala/blog/2007/03/05/why-not-logical-databases
    <b>REward fi suefull</b>

Maybe you are looking for