How does ImportPrivateKey get the Address if I don't explicitly send it? Suppose I just used vanitygen to create this key:

Pattern: 1a
Address: e1aMGYXuGpUwDGH9gz3ZBs8UH746nRdEk6
Privkey: 5KhCszBi22hEZZixPEQkLAMtUVkxbGaxBFsH7a9iefqrxHmSXgH


All I had to do to import this key was import the Privkey. Nothing with "Address' was needed with ImportPrivKey.

I'd like to know the technical details on how the Address can be extracted when all that is known is the private key.   

I've read this and this question, but still haven't found the secret sauce on how an Address is calculated or found in binary format given only a private key. How is the Address extracted from the private key alone?

My intent is to learn this process and implement it in C#. Note that I already know the Base58Check format, and there is no mention of the private key in any wiki I've seen regarding that.
You ought to ask this question on CryptoSE, as the problem is not Bitcoin-specific. I've even done that for you.

In short:


  The public key is QA=dAG where G is the base point on the curve defined in the publicly agreed upon parameters.


And you can find the Bitcoin curve (secp256k1) parameters in the wiki.