CK's BLOG
this site the web

Ubuntu on my PC!

I am successfully running Ubuntu on my VM player.

Words of the day

Sloppy (adj) = careless.
Ex: You are such a sloppy guy. = You are such a careless guy.
Ex: Software Engineer should have a mentality of always writing the best code not the sloppy code.

everything but the kitchen sink =  it is an idiom which means everything that can be possible
Ex: Shellie is moving out to a new place and she takes everything but the kitchen sink to her new place.
= Shellie is moving out to a new place and she takes everything that she can possible take them with her to her new places.

What is a Column Vector?

a column vector or column matrix is an m × 1 matrix, i.e. a matrix consisting of a single column of m elements.

What is orthogonal, esp in Computer Science?

In geometry, orthogonal means "involving right angles" (from Greek ortho, meaning right, and gon meaning angled). The term has been extended to general use, meaning the characteristic of being independent (relative to something else). It also can mean: non-redundant, non-overlapping, or irrelevant. In computer terminology, something - such as a programming language or a data object - is orthogonal if it can be used without consideration as to how its use will affect something else.

In itself, a programming language is orthogonal if its features can be used without thinking about how that usage will affect other features. Pascal is sometimes considered to be an orthogonal language, while C++ is considered to be a non-orthogonal language.

Features of a program that is compatible with its own earlier versions - this is called backward compatible - have an orthogonal relationship with the features of the earlier version, because they are mutually independent; you don't have to worry about how the use of one version's features will cause an unintended effect because of an interaction with those of the other version. Both the features and the programs can be said to be mutually orthogonal.

The length of time data is kept in storage in a computer system is known as its persistence. Orthogonal persistence is the quality of a programming system that allows a programmer to treat data similarly without regard to the length of time the data is kept in storage. Data is stored for varying lengths of time; some is stored very briefly and some is stored relatively permanently. Frequently, a programmer must use different approaches and separate coding to access data depending on whether it is stored for a long time or a short time. Using a programming system with orthogonal data persistence allows the programmer to treat data the same way regardless of its persistence characteristic, saving programming time and making it easier to enforce referential integrity (a type of constraint applied to ensure correct data validity).

In short:
----------------------------------------------------------------------------------------------------------
Orthogonality comes from the Greek orthos, meaning "straight", and gonia, meaning "angle". It has somewhat different meanings depending on the context, but most involve the idea of perpendicular, non-overlapping, or uncorrelated.

Ex: Below Line Segment AB is orthogonal to line Segment CD.

Two vectors are orthogonal if and only if theirdot product is zero
















Orthogonal = perpendicular:

per·pen·dic·u·lar/ˌpərpənˈdikyələr/

Adjective:
At an angle of 90° to a given line, plane, or surface.

Noun:
A straight line at an angle of 90° to a given line, plane, or surface.

Synonyms:
adjective.  vertical - upright
 

First hand-on OpenGL with Visual C++

First we have setup OpenGL in Windows:
2 steps below need to be taken care of:


Step 1:





















Step 2:






















Open Visual Studio 2008:

File -> New Project -> Visual C++ -> General -> Empty Project

Right Click on Source Files -> New Item... -> C++ file (.cpp)























Write code below:

[Code]

// @Author: Vic
// @Date: 9/21/2012 2:38AM
#include "stdafx.h"
#include // this include also gl.h and glu.h

void init(void)
{
    glClearColor(1.0 , 1.0 ,1.0 , 0.0); // Set display-window color to white

    glMatrixMode(GL_PROJECTION); // Set projection parameter
    gluOrtho2D(0.0,200.0,0.0,150.0); // 

}

void lineSegment(void){
    glClear(GL_COLOR_BUFFER_BIT); // Clear display window.

    glColor3f(1.0, 0.0, 0.0); // Set line segment color to red (R,G,B)
    glBegin(GL_LINES);
        glVertex2i(180,15); // Specify line-segment geometry x1,y1 ; x2,y2
        glVertex2i(10,145);
    glEnd();

    glFlush(); // Profess all OpenGL routines as quickly as possible.
}

void main(int argc, char** argv)
{
    glutInit(&argc, argv); // Initialize GLUT dll that we copy it in c:\windows\System32
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); // set display mode
    glutInitWindowPosition (50,100);  // set top-left display window position
    glutInitWindowSize(400,300); // set display window width / height
    glutCreateWindow("An Example OpenGL Program"); // Create display window title.

    init(); // Execute initialization procedure
    glutDisplayFunc(lineSegment); //  Send graphics to display window. our function above main
    glutMainLoop(); // Display everything and wait.
}


[/Code]

Run it:
Output:


























Congratulation you have run your first C++ OpenGL.
Vic,

Correction for the header files I have made a mistake while commenting and accidentally delete the Glut header file declaration you would find the correction below:

#include "stdafx.h"
#include "GL/glut.h"// this include also gl.h and glu.h 

Wisdom for today 10th of September 2012

twenty-one words from Thomas Carlyle.

"Our main
business is not to see what lies dimly at a distance, but to do what lies clearly at hand."


Windows is suck! Graphics.h is not supported!

I want to run Cohen-Sutherland using C++ from Wikipedia Link:
http://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland
Using Turbo C++ but still got an issue that we cannot run application with header file Graphics.h because it is mainly supported only in Unix: So probably I will have to converted it to Java Applet tonight!

[Code]


const int INSIDE = 0; // 0000
const int LEFT = 1;   // 0001
const int RIGHT = 2;  // 0010
const int BOTTOM = 4; // 0100
const int TOP = 8;    // 1000

OutCode ComputeOutCode(double x, double y)
{
        OutCode code;

 code = INSIDE;          // initialised as being inside of clip window

 if (x < xmin)           // to the left of clip window
code |= LEFT;
 else if (x > xmax)      // to the right of clip window
code |= RIGHT;
        if (y < ymin)           // below the clip window
                code |= BOTTOM;
        else if (y > ymax)      // above the clip window
                code |= TOP;

 return code;
}
void CohenSutherlandLineClipAndDraw(double x0, double y0, double x1, double y1)

 OutCode outcode0 = ComputeOutCode(x0, y0);
 OutCode outcode1 = ComputeOutCode(x1, y1);
 bool accept = false;

 while (true) {
if (!(outcode0 | outcode1)) {//Bitwise OR is 0. Trivially accept and get out of loop
accept = true;
break;
} else if (outcode0 & outcode1) {//Bitwise AND is not 0. Trivially reject and get out of loop
                        break;
}
else {

double x, y;

OutCode outcodeOut = outcode0? outcode0 : outcode1;
if (outcodeOut&TOP){           // point is above the clip rectangle
 x = x0 + (x1-x0)*(ymax-y0)/(y1-y0);
 y = ymax;
} else if(outcodeOut & BOTTOM) { // point is below the clip rectangle
 x = x0 + (x1 - x0) * (ymin - y0) / (y1 - y0);
 y = ymin;
} else if (outcodeOut & RIGHT) {  // point is to the right of clip rectangle
 y = y0 + (y1 - y0) * (xmax - x0) / (x1 - x0);
 x = xmax;
} else if (outcodeOut & LEFT) {   // point is to the left of clip rectangle
                                y = y0 + (y1 - y0) * (xmin - x0) / (x1 - x0);
 x = xmin;
                        }

                        if (outcodeOut == outcode0) {
 x0 = x;
                                y0 = y;
 outcode0 = ComputeOutCode(x0, y0);
                        } else {
 x1 = x;
                                y1 = y;
 outcode1 = ComputeOutCode(x1, y1);
                        }
}
               rectangle(xmin, ymin, xmax, ymax);
line(x0, y0, x1, y1);
                getch();
// cleardevice();
        }

        if(accept) {

               rectangle(xmin, ymin, xmax, ymax);
line(x0, y0, x1, y1);
printf("\n\tpoints p0=(%d,%d) p1=(%d,%d)",(int)x0,(int)y0,(int)x1,(int)y1);
 }
}

int main(int argc, char** argv)
{
int gd=DETECT,gm;
initgraph(&gd,&gm,NULL);
outtextxy(300,10,"BEFORE LINE CLIPPING");
rectangle(xmin,ymin,xmax,ymax);
line(10,200,350,300);
getch();
cleardevice();
outtextxy(300,10,"AFTER LINE CLIPPING");
CohenSutherlandLineClipAndDraw(10,200,350,300);
getch();
closegraph();
return 0;
}


[/Code]


Finally I have converted it to Applet application below and the algorithm is exactly like the one from C++ above I like the way it is implemented and I made slightly modification to make people really can understand Cohen-Sutherland by just reading the code implementation below (the differences are just adding mouseListener event MousePressed for capturing coordinates of both endpoints the rest algorithm are almost exactly the same) like I have mentioned before this version was converted from above as we cannot run above C++ within Windows because only Unix OS support Graphics.h:

[Code]


/**
 * @author VIC
* @date 9-6-2012
 * Cohen-SutherLand implementation in steps below in Applet
 * 1- Init add MouseLister for Call back
 *    When there is event mousePressed is received
 * 2- when received capture x,y from Applet windows
 *    for first Coordinate and Last Coordinate
 * 3- And start painting once we get both
 *    first and last point
 * 4- we will always repaint our rectangle
 *    and paint line against Cohen-Sutherland
 *    LineClipping Algorithm
 * 5- Cohen-Sutherland LineClipping
 *    a- Computer OutCode for first Coordinate 
 *    b- Computer OutCode for Last Coordinate
 *    d- In life time While loop [While(true)]
 *       d-1- Check if both outCode first Coordinate
 *            And outCode Last Coordinate == 0
 *            => It is a trivial accepted (both points are
 *            inside rectangle)
 *            so just return true and draw it 
 *            as usual
 *       d-2- Check if outCode 1st Coo. AND 2nd Coo.
 *       != 1 
 *       =>   it is trivial rejected (both points are
 *            outSide rectangle)
 *            so just return false and don't draw it
 *       d-3- In case above 2 cases are not true
 *            that mean LineClipping or at least one coordinate
 *            pair is outside rectangle
 *       =>   Calculate the outer end point against 
 *            Top,Bottom,Right,Left to check if the outer point
 *            is in those area
 *       d-4- Move to the intersection point
 *       =>   Keeping checking it till trivial
 *            Accept or Trivial Reject
 *            And that is it.     
 *   
 */


import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;

//just a simple class to store our coordinate x, y Ex: x1,y1 or x2,y2
class Coordinate {
double x, y;

// Constuctor
Coordinate(double thisx, double thisy) {
x = thisx;
y = thisy;
}
}

// Main Class linceClipper extends Applet (we use Awt not swing if it is swing
// It should have been JApplet)
public class lineClipperCohenSutherland extends Applet {

/**

*/
// ignore this it is generated by Eclipse IDE
private static final long serialVersionUID = -6235793678072658006L;

// Constance variables
// Define Top, Bottom, Right, Left Codes
//       1000,   0100,  0010, 0001    
final static int INSIDE = 0; // 0000
final static int LEFT = 1;   // 0001
final static int RIGHT = 2;  // 0010
final static int BOTTOM = 4; // 0100
final static int TOP = 8;    // 1000

// Ignore these it is just the maximum
// Width and Height of Applet Windows
// They have nothing to do with 
// Cohen-Sutherland Algorithm
final int xMax = 500, yMax = 400;

// These are used to store coordinate the two points
// which will be got from Applet MouseListener of MouseAdapter
// Event mousePressed(MouseEvent evt)
// we initialize firstZeroLastOne with 0
// Because when mouse pressed we track that if it is 0 that 
// means it is the first coordinate
// and increase it by one
// else when pressed the second times => firstZeroLastOne == 1
// will be true and we reset firstZeroLastOne to 0 
// for the next straight line
private int firstX, firstY, lastX, lastY, firstZeroLastOne = 0;

// Our rectangle area or we can say our viewport area or visible area
static double xLeft = 100.0, xRight = 400.0, yBottom = 100.0, yTop = 300.0;

// dimensions of rectangle to clip against
Coordinate C0, C1;

// init() is the starting point
// of Awt applet
public void init() {
resize(xMax, yMax);
this.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent evt) {
if (firstZeroLastOne == 0) {
firstX = evt.getX();
firstY = evt.getY();
firstZeroLastOne++; // increase by one so that 
         // we will know the next 
         // press is the last point
} else if (firstZeroLastOne == 1) {
lastX = evt.getX();
lastY = evt.getY();
firstZeroLastOne = 0; // reset it to Zero for the next line

// Now we got both point0 and Point1
// Or we can say we got first point and last point.
C0 = new Coordinate((double) firstX, (double) firstY);
C1 = new Coordinate((double) lastX, (double) lastY);

// so start painting it:
// we will always paint our rectangle
// but before we draw line we have to
// check it against Cohen-Sutherland algorithm
// for line clipping
paint(getGraphics());
}
}
});
}

public void paint(Graphics g) {
// Always repaint our rectangle area
g.drawRect((int) xLeft, (int) yBottom, (int) (xRight - xLeft),
(int) (yTop - yBottom));

// Before drawing any line check it against 
if (lineClippingCohenSutherland2D(C0, C1))
g.drawLine((int) C0.x, (int) C0.y, (int) C1.x, (int) C1.y);
}

private static int outCodesCompute(Coordinate C) {
int code;

code = INSIDE; // initialised as being inside of clip window

if (C.x < xLeft) // to the left of clip window
code |= LEFT;
else if (C.x > xRight) // to the right of clip window
code |= RIGHT;
if (C.y < yBottom) // below the clip window
code |= BOTTOM;
else if (C.y > yTop) // above the clip window
code |= TOP;

return code;
}

static boolean lineClippingCohenSutherland2D(Coordinate C0, Coordinate C1) {

if (C0 == null && C1 == null) {
return false;
}

// compute outcodes for C0, C1, and whatever point lies outside the clip rectangle
        int outcode0 = outCodesCompute(C0);
        int outcode1 = outCodesCompute(C1);

        while (true) {
                if (outcode0 == 0 && outcode1 == 0) { // Bitwise OR is 0. Trivially accept and get out of loop
                        return true;
                } else if ((outcode0 & outcode1) != 0) { // Bitwise AND is not 0. Trivially reject and get out of loop
                        return false;
                } else {
                        // failed both tests, so calculate the line segment to clip
                        // from an outside point/coordinate to an intersection with clip edge
                        double x =0, y = 0;

                        // At least one end point/coordinate is outside the clip rectangle; pick it.
                        int outcodeOut = outcode0!=0? outcode0 : outcode1;

                        // Now find the intersection point;
                        // use formulas y = y0 + slope * (x - x0), 
                        // Where x can be xRight or xLeft
                        // x = x0 + (1 / slope) * (y - y0)
                        // Where y can be yTop or yBottom
                        
                        // Slope calculation                        
                        double slope = (C1.y - C0.y)/(C1.x - C0.x);
                        
                        if ((outcodeOut & TOP) != 0) {           // point is above the clip rectangle
                                x = C0.x + (1/slope)*(yTop - C0.y) ;
                                y = yTop;
                        } else if ((outcodeOut & BOTTOM) != 0) { // point is below the clip rectangle
                                x = C0.x + (1/slope)*(yBottom - C0.y);
                                y = yBottom;
                        } else if ((outcodeOut & RIGHT) != 0) {  // point is to the right of clip rectangle
                                y = C0.y + slope*(xRight - C0.x) ;
                                x = xRight;
                        } else{ /*if ((outcodeOut & LEFT) != 0) {*/   // point is to the left of clip rectangle
                                y = C0.y + slope*(xLeft - C0.x);
                                x = xLeft;
                        }

                        // Now we move outside point to intersection point to clip
                        // and get ready for next pass.
                        if (outcodeOut == outcode0) {
                                C0.x = x;
                                C0.y = y;
                                outcode0 = outCodesCompute(C0);
                        } else {
                                C1.x = x;
                                C1.y = y;
                                outcode1 = outCodesCompute(C1);
                        }
                }
        }

}
}


[/Code]

Also please be aware that Applet Coordinate is little different than our perspective for:
Y is from Top to Down and
X is from Left to Right
Like following picture:
















This drives me nut yesterday because I click on area 1000 which is Top but it returns that it is in Below and It does return correct that it is below the boundary of Y Axis because we check that if it is less than yBottom that mean it is below bottom of Rectangle Area so it is bottom and that is because Applet Coordinate calculate the Axis Y Top to below.


9 viewports:



My trip to Ocean city with my folks

I currently live in Columbia, MD and luckily we came up with an idea to celebrate my friend Birthday there!
We all have fun even though Saturday it kept raining like cat and dog but Sunday was really good. Since it was raining it took us like 3 hours and a half to arrive there from Columbia but as usually in Google Map it showed that it would take only 3 hours.
We went to eat Crabs, checked some pubs and we thought that we probably checked the night club there but unfortunately we all fell asleep and missed it :D
We also did a sea rocket and a 800 fit paracell above the sea:



















Hooper's Crab house is the best place for eating crabs.






















We did it 800 fit above the sea and we can see a new view of the island.

Slop mathematically proof of the formula division of raise by run

As you might have probably knew that the formula to calculate a slope between two points (a line) is below:
m = raise / run where raise = y2 - y1 and run = x2 - x1 like following picture:

So have you wondered why we have to do it like that I mean
raise divide by run and why not run divide by raise or why not raise multiply by run something like that so in short do we have any mathematically proof that we have to divide raise by run?
The answer yes it has a mathematically proof in following link which usually if we just scan through it we probably miss the exact spot that it proof this division formula of the slope.
Here is the link:







http://en.wikipedia.org/wiki/Slope

Here is the exact spot to proof the division:
Click on the image to have a complete view:

And as we observer the formula came up like that because slop = tan of Angle and as we have studied math in high school tan of Angle = Opposite divide by Adjacent where Opposite is the raise (y2 - y1) and Adjacent is the run (x2 - x1) so that is it.

And finally to calculate the equation of y by x its formula is below:
y = m*x + b where b is the constant from zero points to x and y or x1, y1 as we can say.

So that is it.









Tech Pics of the day-4th of September 2012

100$ BMW gaming mouse with 5 programmable keys.

Tokyoflash Kisai Zone watch tells time in hexagons introductory price of $99, which then jumps to $139

To be continued...

I am waiting for Iphone 5 to be released around September 25th 2012

I heard my friend said that the Iphone 5 is expecting to be announced around 10th of September 2012 and to be released to the market around 25th of September 2012 whereas Iphone 4's price is dropping sharply. Some of Iphone 4 users have had their iphone 4 sold on ebay.com and some auction sites already to await for the iphone 5.



All other smartphone devices have big screen so does Iphone 5 but not as big as others.

Here is just graph toward what activities people are doing with their smartphone screen size:

Words of the day-04th of September 2012


1- Me·di·o·cre
adjective /ˌmēdēˈōkər/ 

Of only moderate quality; not very good
- a mediocre actor

បង្គួរ 
(of medium quality, neither good nor bad, secondrate, not good enough. 
Eg. Is his work poor, mediocre, or good?) 
ដែលបង្គួរ 
Ex: Your style of fighting is just mediocre compared to me.



2- Be·hold
verb /biˈhōld/ 
beheld, past participle; beheld, past tense; beholding, present participle; beholds, 3rd person singular present

See or observe (a thing or person, esp. a remarkable or impressive one)
- behold your king!

behold ( tv. ) [bI'hEyld ] 
(to watch, to look at, gaze upon.) 
សង្កេតមើល 
behold (2) ( interj. ) [bI'hEyld ] 
(មើលន៎) 
beholden ( adj. ) [bI'hEyldEn ] 
~ to sb (for sth) (obligated or indebted .) 
ដែលជំពាក់គុណ, ដែលនៅជំពាក់, ដែលសងមិនទាន់គ្រប់ 
beholder ( n. ) [bI'hEyldE(r) ] 
អ្នកមើល, អ្នកពិនិត្យមើល, សាក្សី, ភ័ស្ដុតាង, អ្នកទស្សនា, អ្នកមើល, អ្នកឃើញ 


3- Per·vert·ed
adjective /pərˈvərtid/ 

(of a person or their actions) Characterized by sexually abnormal and unacceptable practices or tendencies
- he whispered perverted obscenities


4- Ob·scen·i·ty
noun /əbˈsenitē/ 
obscenities, plural
The state or quality of being obscene; obscene behavior, language, or images
- the book was banned for obscenity

An extremely offensive word or expression
- the men scowled and muttered obscenities
ភាពអាសអាភាស 
(indecency, character or quality of being obscene; filthy, licentious, lewd, lubricious, lascivious, goatees.) 
សំដីរូបឬអំពើ អាសគ្រាម, ភាសាអាសគ្រាម, បែបនិពន្ធ អាសគ្រាម, ភាពគម្រាំង, ភាពគ្រើម, ភាព សាមញ្ញ (មិនវិសេស), ភាពខ្ជីខ្ជា, ភាពក ម្រោល, ភាពគ្រោតគ្រាត, សំដីឬអំពើជូដង់ 

5- Ob·scene
adjective /əbˈsēn/ 
(of the portrayal or description of sexual matters) Offensive or disgusting by accepted standards of morality and decency
- obscene jokes
- obscene literature

Offensive to moral principles; repugnant
- using animals' skins for fur coats is obscene
(indecent; filthy.) 
ដែលអោយខ្ពើមរអើម ឬអោយស្អប់ខ្ពើម, ដែលអាសគ្រាម 

6- Re·pug·nant
adjective /riˈpəgnənt/ 

Extremely distasteful; unacceptable
- the thought of going back into the fog was repugnant to him

In conflict with; incompatible with
- a bylaw must not be repugnant to the general law of the country

Given to stubborn resistance
ដែលជាទីមិនគួរអោយចូលចិត្ដ, គួរអោយស្អប់ខេ 
~ (to sb) (distasteful objectionable.) 
ដែលជាទីមិនគួរអោយចូលចិត្ដ, ដែលគួរអោយស្អប់ខ្ពើម, ដែលអោយខ្ពើមរអើម រឺអោយស្អប់ខ្ពើម, ដែលមិនត្រូវគ្នា (កិច្ចសន្យា) 

Word of the day-3rd of September 2012



      1- Gul·li·ble
        adjective /ˈgələbəl/ 
        Easily persuaded to believe something; credulous
        ដែលឆាប់ជឿ 
        (easily tricked, credulous, naive, simple.) 
        ដែលងាយជឿ, ដែលឆាប់ជឿ 

      2- Hood·lum


noun /ˈho͞odləm/  /ˈho͝od-/ 

hoodlums, plural

A person who engages in crime and violence; a hooligan or gangster

អ្នកប្រព្រឹត្ដនូវអំពើទុច្ចរិត, យូកូម, ក្មេងអានាថា, មនុស្សពាល, ចោរ, មនុស្សខូចកាច, មនុស្ស ចោលម្សៀត 

= Thug



3- Mug
noun /məg/ 
mugs, plural

A large cup, typically cylindrical and with a handle and used without a saucer

The contents of such a cup
- a large mug of tea vanished in a single gulp

A person's face

A hoodlum or thug

A stupid or gullible person
Image:










mug ( n. ) [mLg ] 
ពែង ឬ កែវធំមានដៃ 
(a large vessel for use without a saucer, contents, the face or mouth, a ruffian or thug, a stupid or gullible person.) 
ថូ, ផើង់ 
mug (2) ( n. ) 
គយ, មាត់មុខ 
mug (3) ( t.v. ) 
វាយប្លន់(យកទ្រព្យ) 
muger ( n. ) 
អ្នកវាយប្លន់ 
muggins ( n. ) ['mLgInz ] 
មនុស្សភ្លីភ្លើ 
muggy ( adj. ) ['mLgI ] 
(oppressively damp and warm. 
Eg. the muggy days of August) 
ដែលក្ដៅខ្លាំង់ 

4- sau·cer
noun /ˈsôsər/ 
saucers, plural

A shallow dish, typically having a circular indentation in the center, on which a cup is placed
ទ្រនាប់, ចានទ្រនាប់


5- Chirp
verb /CHərp/ 
chirped, past participle; chirped, past tense; chirping, present participle; chirps, 3rd person singular present

(typically of a small bird or an insect) Utter a short, sharp, high-pitched sound
- outside, the crickets chirped monotonously

(of a person) Say something in a lively and cheerful way
- “Good morning!” chirped Alex

noun /CHərp/ 
chirps, plural

A short, sharp, high-pitched sound

chirp ( iv. ) 
tv. យំចេបៗ ( បក្សីតូចៗ ) / យំ , បន្លឺសំឡេងឫសូរបន្ដិចៗ n. សម្លេងយំស្រែក , សំឡេងយំ 
chirpy ( adj. ) 
ដែលយំចេបៗនៃបក្សីដោយរីករាយ 

6- Sa·li·va
noun /səˈlīvə/ 

Watery liquid secreted into the mouth by glands, providing lubrication for chewing and swallowing, and aiding digestion

saliva ( n. ) [sE'laIvE ] 
ទឹកមាត់ 
(the watery fluid, produced by glands in the mouth, It keeps the mouth moist and helps in the digestion of food.) 
ទឹកមាត់ 
salivary ( adj. ) [sxlIvErI ] 
នៃទឹកមាត់ 
(1. Of, relating to, or producing saliva. 2. Of or relating to a salivary gland.) 
នៃទឹកមាត់ 


7- salivate ( t.v. ) ['sxlIveIt ] 
ស្រក់ទឹកមាត់ 
(salivated, salivating, salivates) (To secrete or produce saliva. To produce excessive salivation in.) 
ស្រក់ទឹកមាត់ 
drool ( t.v. ) [drUl ] 
បង្ហៀរទឹកមាត់ 





 

Just An Information

I will updat useful information as frequent as I could...

Technology

Usage Policies